我有各种虚拟主机用于我的Web开发工作,包括中国国家电影网. 这
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 文档根目录?
笔记:
我已经尝试将我的站点可用/cnm 文件重命名为站点可用/cnm.conf 并使用
a2ensite cnm
和service apache2 reload
启用它。 这是一件好事,但它什么也改变不了。我已经尝试将
<VirtualHost *:80>
更改为<VirtualHost cnm.localhost>
或<VirtualHost cnm>
. 这什么也没做。
Ubuntu 13.10 使用 apache 2.4,您应该检查所有 apache 配置。但是对于目前的情况,您应该注意,如果a2ensite
和a2dissite
命令不以 .conf
结尾,则无法在/etc/apache2/sites-available 中看到您的文件,因此请将其重命名为 sites-available/cnm.conf
并运行 a2ensite cnm
。
那么你的虚拟主机定义肯定更好*: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 进行测试,那么使用 http://cnm/
应该使用在服务器名称中具有 cnm 的虚拟主机。
的答案,则意味着 apache 在可用于该 IP/端口的服务器名称和服务器别名列表中找不到您的主机标头中使用的名称,并回退到默认虚拟主机。如果您真的陷入困境(并且您没有忘记重新启动),您可以随时删除默认的虚拟主机并仅保留您正在处理的虚拟主机。
我找到了问题的答案。 我需要删除启用/etc/apache2/sites-enabled 中的文件。
- 删除/etc/apache2/sites-enabled 中的文件
- 重命名/etc/apache2/sites 中的配置文件,以便以 .conf 结尾
- 对于站点可用中的每个文件,请运行
sudo a2ensite mysite
。 - 运行
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.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
又回来了。 :)
重命名文件配置"cnm",扩展名为 .conf
mv sites-available/cnm sites-available/cnm.conf
a2ensite sites-available/cnm.conf
准备好了!
service apache2 reload
我有同样的问题途中是禁用000-default并重新加载Apache,但这不是解决方案,因为您必须同时只有一个vhost:(
sudo a2dissite 000-default.conf
sudo service apache2 reload
我遇到了类似的问题。我的服务器名称和我的 FQDN 与运行到/var/www/html 目录中的默认值相同。我禁用了默认配置,我的网站工作起来轻而易举。谢谢@regilero。
sudo a2dissite 000-default.conf
为我修复了它。