我正在使用Ubuntu 14.0设置新的Web服务器,在the instructions here之后创建虚拟主机,但是我的单个附加虚拟主机总是加载默认站点(/ var / www / html)。 / p>
这是我的vhost配置(我已经用example.com替换了我的域名,但它在其他方面完全相同):
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/example/app
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
我对Ubuntu 14中安装的Apache 2.4配置没有做任何其他更改。
编辑:我在更改此虚拟主机后正确启用了网站并重新启动了Apache。
当我在浏览器中访问example.com时,我获得了默认站点。我究竟做错了什么?如何让此虚拟主机加载正确的目录?
编辑:解决方案是缺少&#34; sudo&#34;在重启命令(https://stackoverflow.com/a/23713299/225682)中。答案 0 :(得分:0)
你需要在编辑vhost后重启我们服务器的apache,你还需要添加enable vhost。 启用:
sudo a2ensite example.conf (name of config file inside sites-available directory)
重新启动服务器:
sudo service apache2 restart
还要检查www目录的权限,也许apache的用户无法读取该目录。
答案 1 :(得分:0)
您是否在配置中的某个位置启用了虚拟主机?
NameVirtualHost *:80
答案 2 :(得分:0)
最后在https://stackoverflow.com/a/23713299/225682找到答案。
必须使用sudo重新启动Apache,否则更改实际上无效。
答案 3 :(得分:0)
这是我的故事。我有新装:
webmaster@ubuntuserver:/srv$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
webmaster@ubuntuserver:/srv$
webmaster@ubuntuserver:/srv$ apache2 -v
Server version: Apache/2.4.18 (Ubuntu)
Server built: 2017-09-18T15:09:02
webmaster@ubuntuserver:/srv$
我使用了非常简单的虚拟主机配置:
<VirtualHost *:80>
ServerAdmin admin@testsite.com
ServerName testsite.com
ServerAlias www.testsite.com
DocumentRoot /var/www/testsite
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
尝试过许多建议,例如:
最后解决了添加:
Listen 80
到虚拟主机配置的顶部,如下所示:
Listen 80
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName testsite.com
ServerAlias www.testsite.com
DocumentRoot /var/www/testsite
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
最终虚拟主机开始响应并按预期运行。
有趣的是,我后来尝试重新创建问题,虚拟主机甚至没有设置Listen 80
。但是我确信使虚拟主机响应的触发器是Listen 80
设置。
无论如何,您也可以参考Apache文档:
答案 4 :(得分:0)
6年为时已晚,但这也许会对某人有所帮助。在调试此类问题时,请首先检查apache是否可以查看您的虚拟主机配置:apachectl -S
您应该在输出中看到您的虚拟主机配置:
*:80 example.com (/etc/httpd/conf.d/example.com.conf:2)
如果看不到它,则可能是配置文件路径未包含在主配置文件中,或者文件本身缺少.conf扩展名。
如果在输出中看到VirtualHost,但仍在获取默认的VirtualHost,请检查主配置文件中的全局ServerName
指令。它应该与您的VirtualHost ServerName不匹配。
当心-如果未设置全局ServerName,则apache将使用rDNS获得一个。因此,如果您的IP地址的反向DNS记录匹配example.com(与VirtualHost相同),则可能会忽略您的VirtualHost。我相信这是一个非常常见的问题根源,我还没有在论坛上找到它。如果遇到此问题,请使用host
命令检查IP的rDNS记录。
答案 5 :(得分:-1)
尝试使用-t选项运行apachectl命令,这将检查所有配置是否正确。这个虚拟主机是哪个文件。您是否重新启动了apache以获取这些更改?
apachectl restart