Ubuntu 上的虚拟主机错误、警告和问题

Ubuntu 上的虚拟主机错误、警告和问题

我可能设置错了。似乎我总是无法正确配置虚拟主机。

重新启动 Apache 后出现此错误:

Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Wed Oct 14 17:39:17 2009] [warn] VirtualHost site1.local:0 overlaps with VirtualHost site2.local:0, the first has precedence, perhaps you need a NameVirtualHost directive

为什么 ServerName 使用 127.0.1.1?为什么我的 site2.local 虚拟主机不起作用?

这是我的主机文件:

# /etc/hosts
127.0.0.1   localhost site1.local site2.local
127.0.1.1   andrew-laptop


# 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
ff02::3 ip6-allhosts

在 /etc/apache2/sites-available 中我有 3 个文件:default、site1.local 和 site2.local

默认:

NameVirtualHost *
<VirtualHost *>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined
    ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

站点1.本地:

<VirtualHost site1.local>
    ServerAdmin webmaster@localhost
    ServerName admin
    DocumentRoot /home/andrew/Projects/site1/public
    CustomLog /var/log/apache2/site1-access.log combined
    <Directory /home/andrew/Projects/site1/public>
        Options FollowSymLinks
    AllowOverride All
    </Directory>
</VirtualHost>

站点2.本地:

<VirtualHost site2.local>
    ServerAdmin webmaster@localhost
    ServerName admin
    DocumentRoot /home/andrew/Projects/site2/public
    CustomLog /var/log/apache2/site2-access.log combined
    <Directory /home/andrew/Projects/site2/public>
        Options FollowSymLinks
    AllowOverride All
    </Directory>
</VirtualHost>

如果其中任何一项看起来不对,请告诉我。请帮我找出我的设置出了什么问题。

答案1

我相信您应该使用 site1.local / site2.local 作为虚拟主机文件中的 ServerName 参数...至少这对我来说是有效的。

127.0.0.1 ServerName 默认值很可能在 apache2.conf 中设置。

答案2

这里有一个问题:在 /etc/hosts 中,你的 localhosts 行是错误的。你有这个:

# /etc/hosts
127.0.0.1   localhost site1.local site2.local

需要有这个:

# /etc/hosts
127.0.0.1   localhost.localdomain localhost

第一行很重要。您可以将 site1.local 和 site2.local 分配给几乎任何其他内容,但第一行需要同时包含localhost.localdomainlocalhost

我不确定是什么黑魔法导致了这个问题,但如果将这一行更改为其他内容,Ubuntu 9.04 和 Debian 5.0.3 中就会出现奇怪的问题。我最近安装的 Debian 也出现了同样的 Apache 错误(还有一些其他有趣的问题),直到我回滚了自己对该行所做的更改。

由于您仍然需要定义site1.localsite2.local,因此您可以这样做:

127.0.1.1   andrew-laptop site1.local site2.local

但是 Apache 可能更喜欢为网站使用不同的 IP 地址,因此您最好这样做:

127.0.1.1   andrew-laptop
127.0.1.2   site1.local
127.0.1.3   site2.local

127.0.0.0/8 网络是环回网络,因此您可以为其选择任何您喜欢的 127.xxx 地址。

相关内容