我有各种虚拟主机用于我的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文档根目录?
注意:
我已经尝试将我的sites-available / cnm文件重命名为sites-available / cnm.conf并使用a2ensite cnm
和service apache2 reload
启用它。这是一件好事,但它没有任何改变。
我已尝试将<VirtualHost *:80>
更改为<VirtualHost cnm.localhost>
或<VirtualHost cnm>
。那没什么。
答案 0 :(得分:12)
Ubuntu 13.10使用apache 2.4 ,你应该检查你的所有apache配置。但对于本案例,您应该注意a2ensite
和a2dissite
命令无法在/ etc / apache2 / sites中看到您的文件,如果它不以.conf
结尾,因此将其重命名为sites-available/cnm.conf
并运行a2ensite cnm
。
然后使用*:80
确定您的Virtualhost定义更好,这意味着为端口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)
如果没问题,并且在cnm
的主机文件中有正确的IP,并且您可以使用ping进行测试,那么使用http://cnm/
应该使用具有cnm的虚拟主机的服务器名称强>
如果您有来自默认Virtualhost的答案,则表示apache未找到可用于该IP /端口的ServerName和ServerAlias列表中的Host头中使用的名称,并且回退到默认的Virtualhost。如果您真的被卡住(并且您没有忘记重新启动),您可以随时删除默认的Virtualhost并仅保留您正在使用的虚拟主机。
答案 1 :(得分:5)
我找到了问题的答案。我需要删除/ etc / apache2 / sites-enabled中的文件。
sudo a2ensite mysite
。sudo service apache2 reload
答案 2 :(得分: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
答案 3 :(得分:1)
我找到了这个问题的答案:
升级到Ubuntu 13.10
时,DocumentRoot
似乎没有什么区别。
这是因为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 reload
和DocumentRoot
又回来了。 :)
答案 4 :(得分:0)
使用扩展名.conf
重命名文件配置“cnm”mv sites-available/cnm sites-available/cnm.conf
a2ensite sites-available/cnm.conf
准备好了!
service apache2 reload
答案 5 :(得分:0)
我有同样的问题 在途中是禁用000-default并重新加载apache,但这不是解决方案,因为你必须同时只有一个vhost :(
sudo a2dissite 000-default.conf
sudo service apache2 reload
答案 6 :(得分:0)
我遇到了类似的问题。我的服务器名称和我的FQDN与运行到/ var / www / html目录中的默认值相同。我禁用了默认配置,我的网站工作得很轻松。谢谢@regilero。
sudo a2dissite 000-default.conf
为我修好了。