升级到Ubuntu 13.10后,Apache不使用DocumentRoot(使用默认页面"It works!")

Tom*_*aws 11 apache ubuntu-13.10

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

sites-available/cnm
Run Code Online (Sandbox Code Playgroud)

我的文件非常简单地说:

<VirtualHost *:80>
    ServerName cnm
    DocumentRoot /var/www/cnm/public_html
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

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

sites-available/000-default.conf
Run Code Online (Sandbox Code Playgroud)

其中说(除其他外):

<VirtualHost *:80>
    DocumentRoot /var/www
Run Code Online (Sandbox Code Playgroud)

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

笔记:

  1. 我已经尝试过重新命名我的网站可用/ CNM文件地点可用/ cnm.conf,并使它a2ensite cnmservice apache2 reload.这是一件好事,但它什么都没改变.

  2. 我已经尝试过<VirtualHost *:80>改为<VirtualHost cnm.localhost>或去<VirtualHost cnm>.那什么都没做.

reg*_*ero 12

Ubuntu 13.10使用apache 2.4,你应该检查你的所有apache配置.但对于这个目前的情况下,你应该注意的是a2ensite,并a2dissite命令将无法看到你的文件/ etc/apache2的/网站可用,如果它不是结束.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
Run Code Online (Sandbox Code Playgroud)

你应该得到类似的东西:

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)
Run Code Online (Sandbox Code Playgroud)

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

如果您有来自默认Virtualhost的答案,则表示apache未找到ServerName和ServerAlias列表中使用的名称,该名称可用于该IP /端口,并且回退到默认的Virtualhost.如果你真的陷入困境(并且你没有忘记重新启动),你可以随时删除默认的Virtualhost,并只保留你正在使用的虚拟主机.

  • 还要记住,他们已经更改了Access控制指令(例如`Order deny,允许Deny from all`到`Require all denied`),请参阅[从2.2升级到2.4时的更改](http://httpd.apache .ORG /文档/电流/ upgrading.html) (2认同)

Tom*_*aws 5

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

  1. 删除/ etc/apache2/sites-enabled中的文件
  2. 重命名/ etc/apache2/sites中的配置文件 - 可用于.conf结尾
  3. 对于站点中的每个文件 - 可用,运行sudo a2ensite mysite.
  4. sudo service apache2 reload

  • 我有同样的问题,这没有帮助.我的vhosts正在运行,他们只是不听"DocumentRoot"设置. (4认同)