11

我有各种虚拟主机用于我的 Web 开发工作,包括 cnm。这

sites-available/cnm

我的文件说得很简单:

<VirtualHost *:80>
    ServerName cnm
    DocumentRoot /var/www/cnm/public_html
</VirtualHost>

我升级到 Ubuntu 13.10,当我将浏览器指向 cnm/ 时,我看到 /var/www/index.html 文件似乎在默认文件中指示

sites-available/000-default.conf

其中说(除其他外):

<VirtualHost *:80>
    DocumentRoot /var/www

当我浏览到 cnm/ 时,我需要做什么才能让 Apache 读取我的 cnm 文档根目录?

笔记:

  1. 我已经尝试将我的 sites-available/cnm 文件重命名为 sites-available/cnm.conf 并使用 and 启用a2ensite cnmservice apache2 reload。这是一件好事,但它不会改变任何事情。

  2. 我已经尝试更改<VirtualHost *:80><VirtualHost cnm.localhost><VirtualHost cnm>。那什么也没做。

4

7 回答 7

12

Ubuntu 13.10 使用 apache 2.4,你应该检查你所有的 apache 配置。但是对于目前的情况,您应该注意,a2ensite如果a2dissite/etc/apache2/sites-available 中的文件不以 结尾,那么命令将无法看到您的文件.conf,因此将其重命名为sites-available/cnm.conf并运行a2ensite cnm

那么您的 Virtualhost 定义肯定会更好*:80,这意味着该虚拟主机已为*端口 80 上的所有 IP 接口()激活。cnm.localhost或者cnm这里不是有效值,只有 IP 号(您的 apache 服务器的 Ip)或*全部,以及端口号.

然后检查你的配置是如何被 apache 读取的,运行这些命令:

# load apache env
# be careful, there is a dot and a space
. /etc/apache2/envvars
# Check apache Virtualhosts config
apache2 -S

你应该得到类似的东西:

VirtualHost configuration:
*:80                   is a NameVirtualHost
     default server something (/etc/apache2/sites-enabled/000-default.conf:1)
     port 80 namevhost something (/etc/apache2/sites-enabled/000-default.conf:1)
     port 80 namevhost cnm (/etc/apache2/sites-enabled/cnm.conf:4)

如果没问题,并且如果您的主机文件中有正确的 Ip cnm,并且您可以使用 ping 进行测试,那么使用应该使用在ServerNamehttp://cnm/中具有 cnm 的 Virtualhost 。

如果您从默认 Virtualhost 得到答案,则意味着 apache 未在该 IP/端口可用的 ServerName 和 ServerAlias 列表中找到 Host 标头中使用的名称,并回退到默认 Virtualhost。如果您真的卡住了(并且您没有忘记重新启动),您可以随时删除默认的虚拟主机并只保留您正在处理的虚拟主机。

于 2013-11-07T16:58:51.457 回答
5

我找到了我的问题的答案。我需要删除 /etc/apache2/sites-enabled 中的文件。

  1. 删除 /etc/apache2/sites-enabled 中的文件
  2. 重命名 /etc/apache2/sites-available 中的配置文件以具有 .conf 结尾
  3. 对于站点可用的每个文件,运行sudo a2ensite mysite.
  4. sudo service apache2 reload
于 2013-11-07T17:47:27.533 回答
3

我找不到任何关于如何让它在我身边工作的分步教程。我在这里和那里收集了一些零碎的东西,所以对于那些需要遵循所有步骤的人来说,这里有:

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/local-mydefault.conf

$ sudo gedit /etc/apache2/sites-available/local-mydefault.conf

将以下内容粘贴到 local-mydefault.conf 文件中(将路径“/your/full/path”更改为您想要保存文件的位置。并将用户名更改为您自己的用户名):

# ------------------------------------------------------
<VirtualHost *:80>
    ServerName localhost
    ServerAdmin webmaster@localhost

    DocumentRoot /your/full/path
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /your/full/path>
            DirectoryIndex index.php
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Require all granted
            allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

User username
Group username
# ------------------------------------------------------

然后键入以下命令

$ cd /etc/apache2/sites-available/
$ sudo a2ensite local-mydefault.conf
$ sudo a2dissite 000-default.conf
$ sudo /etc/init.d/apache2 restart
于 2014-09-19T10:26:04.327 回答
1

我找到了这个问题的答案:

升级到Ubuntu 13.10时,DocumentRoot似乎没有什么不同。

这是因为 Apache 2.4 将目​​录配置移到了其他地方。您的旧.conf文件仍然有这些行:

    DocumentRoot "/var/www/myVhost"
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory "/var/www/myVhost">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

删除(或注释掉)<Directory>指令,因此您只有:

    DocumentRoot "/var/www/myVhost"

现在重新加载您的设置:service apache2 reload并且DocumentRoot回来了。:)

于 2013-11-19T15:51:35.107 回答
0

使用扩展名 .conf 重命名文件配置“cnm”

mv sites-available/cnm sites-available/cnm.conf
a2ensite sites-available/cnm.conf

准备好了!

service apache2 reload
于 2014-01-31T22:20:47.407 回答
0

我遇到同样的问题是禁用 000-default 并重新加载 apache,但这不是解决方案,因为您必须同时只有一个虚拟主机:(

sudo a2dissite 000-default.conf
sudo service apache2 reload
于 2014-07-29T22:42:45.920 回答
0

我遇到了类似的问题。我的服务器名称和我的 FQDN 与默认运行到 /var/www/html 目录中的相同。我禁用了默认配置,我的网站就像轻而易举地工作。谢谢@regilero。

sudo a2dissite 000-default.conf

为我修好了。

于 2015-11-28T06:46:44.707 回答