我在配置基于名称的虚拟主机时遇到了一些麻烦。
我可以使用空白 httpd.conf 文件通过“service apache2 start”启动服务器,并且它将按预期运行,所有内容都指向 /var/www。
当我用以下内容填充 httpd.conf 时:
# Ensure that Apache listens on port 80
Listen 80
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/kevins_playground
ServerName home.coolkev.com
# Other directives here
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/flatline_and_co
ServerName www.flatline_and_co.com
# Other directives here
</VirtualHost>
运行“service apache2 start”时出现此错误
root@kevin-server:/etc/apache2# service apache2 start
* Starting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Thu Jul 26 20:10:01 2012] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
我找到了解决办法,
- 我删除了对 httpd.conf 的所有更改,对我来说,这留下了一个空白文件。
- 我将 ./sites-available/ 中的现有默认站点文件复制到我的两个虚拟主机。
- 我编辑了这两个文件并替换了有意义的值,我认为它们需要更改的地方应该是显而易见的(网站基础文件夹、网站网址)。
- 我按照你的要求在 ./sites-enabled/ 中创建了符号链接
- 我重新启动了 Web 服务器“sudo service apache2 restart”,并且它成功了。
我认为问题源于在解析文件时,Apache 发现了两个带有“<VirtualHost>”的文件,我的 httpd.conf 和 ./sites-available/ 中的默认网站配置
答案1
只要您没有触及默认 vhost(它已经包含 NameVirtualHost *:80 指令),您就不应该重复默认行为。
既然您必须忍受 Debuntu,为什么不使用它并将您的 vhosts 放在 /etc/apache2/sites-enabled/ 中,每个文件一个?