编辑 apache vhosts 和 ubuntu hosts 文件?

编辑 apache vhosts 和 ubuntu hosts 文件?

我刚刚安装了 ubuntu(11.04)。

我已经安装了 apache/mysql/php 等。

我有几个网站

/var/www/站点1
/var/www/站点2
/var/www/站点3

我希望能够访问这些
http://site1.local
http://site2.local
http://site3.local

因此在我的主机文件中我有
127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local

然后我就复制了/etc/apache2/sites-available/default3遍。

所以现在我有
/etc/apache2/sites-available/site1
/etc/apache2/sites-available/site2
/etc/apache2/sites-available/site3

这些都看起来像(带有适当的 sitex 名称)

<VirtualHost site1.local>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/site1
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/site1/>
        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 ${APACHE_LOG_DIR}/error.log

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

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    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>

然后在终端中调用

sudo a2ensite site1 site2 site3 && sudo /etc/init.d/apache2 reload

这似乎可行,但同时只有一个虚拟主机可工作(包括默认),我做错了什么?


当我运行重新加载命令时,我得到

  • 重新加载 Web 服务器配置 apache2
    apache2:无法可靠地确定服务器的完全限定域名,
    使用 127.0.1.1 作为 ServerName
    [2011 年 4 月 15 日星期五 10:45:27] [警告] NameVirtualHost *:80 没有 VirtualHosts

答案1

根据您的主机文件,您映射此行:

<VirtualHost site1.local>

更改为:

<VirtualHost 127.0.0.1>

你想要的是:

<VirtualHost *:80>
    ServerName site1.somesite.com

您可能还需要:

NameVirtualHost *:80

答案2

我遇到了同样的问题。经过多次尝试和错误,我通过添加到 解决了该问题NameVirtualHost *:80sites-available/default并在 sites-available/ 中的任何其他文件中删除/不添加同一行

但我不知道为什么它会起作用。

答案3

错误消息:“无法可靠地确定服务器的完全限定域名...”是 apache2 服务器中的一个奇怪问题,它不会阻止或阻止 apache2 服务器在本地“VirtualHost”您的“ServerName”。请阅读 Shane Madden 提供的链接,因为解决方案就在那里。另一个“警告”消息:“NameVirtualHost *:80 没有 VirtualHosts”将阻止您成功。

问题 1:FQDN 的解决方案很简单,而且这两种解决方案似乎对不同的用户都有效 - 所以请同时执行这两种解决方案:将文本字符串“ServerName localhost”(不带引号)添加到两个文件之一(或两个)中;/etc/apache2/http.d.conf 文件,该文件开箱即为空白。并将其添加到 /etc/apache2/apache2.conf 文件的底部。

问题 2:阅读手册后,您将看到有关 Apache2 各种设置的示例,但您真正需要记住的一件事是指令“NameVirtualHost”(位于 /etc/apache2/ports.conf 中)需要与您在指令中指定的完全相同(位于 etc/apache2/sites-available/siteFile 中,其中“siteFile”在您的示例中是您的“site1”、“site2”和“site3”)。不要在一个中使用布尔值,而在另一个中使用静态 IP 地址或静态 IP:Port。一旦您了解了这种关系的严重性,那么阅读手册并尝试它们的设置就会奏效。

问题 3:隐藏的问题:了解了问题 2,您现在需要确保它不会发生在您的其他站点文件中 - 即您的默认文件中。如果默认文件有一个 VirtualHost *:80,而您的 site1 有一个 VirtualHost 127.0.0.1,并且您的 ports.conf 有一个 NameVirtualHost 127.0.0.1,那么 site1 和 ports.conf 是一致的,但默认文件现在不再适用,并将导致错误。

坚持住!这不容易……

相关内容