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

我有各种虚拟主机用于我的网站开发工作,包括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,并使用a2ensite cnmservice apache2 reload 。 这是一件好事,但它没有改变。

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

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

那么你的虚拟主机的定义肯定比*:80更好,这意味着这个虚拟主机在端口80上被所有IP接口( * )激活cnm.localhostcnm在这里是无效值,只有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来测试,然后使用http://cnm/应该在serverName中使用具有cnm的虚拟主机。

如果你有一个默认的虚拟主机的答案,那么这意味着Apache没有找到你的主机头中的serverName和serverAlias可用于该IP /端口的名称,并回退到默认的虚拟主机。 如果你真的陷入困境(你没有忘记重启),你总是可以删除默认的虚拟主机,只保留你正在使用的虚拟主机。

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

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

我找不到任何一步一步的教程如何使它在我身边工作。 我在这里和那里聚集了点点滴滴,所以对于那些需要所有步骤的人来说,这里有:

 $ 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 

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

升级到Ubuntu 13.10DocumentRoot似乎没有什么区别。

这是因为Apache 2.4将Directory配置移到其他地方。 旧的.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 reloadDocumentRoot回来了。 🙂

重命名扩展名为.conf的文件配置“cnm”

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

准备好了!

 service apache2 reload 

在路上我有同样的问题是禁用000默认和重新加载Apache,但这不是解决方案,因为你必须只有一个虚拟主机在同一时间:(

 sudo a2dissite 000-default.conf sudo service apache2 reload 

我遇到了类似的问题。 我的服务器名称和我的FQDN与默认运行到/ var / www / html目录相同。 我禁用了默认配置,我的网站工作起来很轻松。 感谢@regilero。

 sudo a2dissite 000-default.conf 

给我修好了