Я, вероятно, что-то настроил неправильно. Кажется, у меня всегда возникают проблемы при попытке правильно настроить виртуальные хосты.

Я получаю эту ошибку после перезапуска 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

Почему он использует 127.0.1.1 для ServerName? И почему не работает мой виртуальный хост site2.local?

Вот мой файл hosts:

# /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 файла: по умолчанию, 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>

site1.local:

<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>

site2.local:

<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>

Если что-то из этого кажется неправильным, пожалуйста, дайте мне знать. Пожалуйста, помогите мне понять, что не так с моей настройкой.

2 ответа2

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.localdomain и localhost .

Я не уверен, что за чёрная магия ответственна, но в Ubuntu 9.04 и Debian 5.0.3 вещи странно ломаются, если эта строка меняется на что-то ещё. Моя недавняя установка Debian имела те же ошибки Apache (плюс некоторые другие интересные поломки), пока я не откатил свои собственные изменения в этой строке.

Так как вам все еще нужно определить site1.local и site2.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.

1

Я считаю, что вы должны использовать site1.local / site2.local в качестве параметров ServerName в ваших файлах виртуального хоста ... по крайней мере, это то, что работает для меня.

127.0.0.1 ServerName по умолчанию, вероятно, устанавливается в apache2.conf.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .