我的本地开发机 Ubuntu 14.04 上有 3 个 drupal 站点在运行。我在让第二个和第三个站点运行的时候遇到了问题,当它们运行起来时,我感觉这完全是运气好。这三个站点让我坚持了很长时间,但现在我需要第四个站点,而我无法让它运行。
这是我创建网站的过程
- 将 drupal 文件放入文件夹 ~/workspace/sitedemo1
- 创建虚拟主机 sitedemo1.conf(复制其中一个可用的文件,然后编辑相关详细信息)
- 编辑 /etc/ports - 输入“127.0.0.1 sitedemo1”
- a2ensite sitedemo1
- 服务 apache2 重新加载
结果是我得到了“Apache2 Ubuntu 默认页面”,我非常困惑,因为其他 3 个站点正在运行,而我也做了同样的事情。
站点演示1.conf
<VirtualHost *:80>
ServerAlias sitedemo1
DocumentRoot /home/karl/workspace/sitedemo1
<Directory "/home/karl/workspace/sitedemo1">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
上面我混淆了 /etc/hosts 和 /etc/apache2/ports.conf。以下是两者的内容。
/etc/apache2/ports.conf
# original line: Listen 80
Listen 127.0.0.1:80
Listen 127.0.0.2:80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
/etc/hosts
127.0.0.1 localhost
127.0.1.1 Ubuntu-05
127.0.0.1 drupal-8.localhost
127.0.0.1 drupal-7-site01.localhost
127.0.0.1 drupal-7-site02.localhost
127.0.0.1 sitedemo1
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
答案1
根据 Apache文档:
ServerName 继承
最好始终在每个基于名称的虚拟主机中明确列出 ServerName。
如果 VirtualHost 未指定 ServerName,则服务器名称将从基本服务器配置中继承。如果未全局指定服务器名称,则在启动时通过第一个侦听地址的反向 DNS 解析检测服务器名称。无论哪种情况,此继承的服务器名称都会影响基于名称的虚拟主机解析,因此最好始终在每个基于名称的虚拟主机中明确列出 ServerName。
ServerName 需要完整限定域名 (FQDN)尝试在配置文件 (/etc/hosts 和 sitedemo1.conf) 中的 sitedemo1.localhost 中更改 sitedemo1
添加 ServerAlias :
ServerName sitedemo1.localhost