Назад | Перейти на главную страницу

редактирование файла apache vhosts и ubuntu hosts?

Я только что установил ubuntu (11.04).

Я установил apache / mysql / php и т. Д.

У меня есть несколько сайтов

/ var / www / site1
/ var / www / site2
/ var / www / site3

Я хочу иметь доступ к ним на
http: //site1.local
http: //site2.local
http: //site3.local

Итак, в моем файле hosts у меня есть
127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local

Затем я скопировал /etc/apache2/sites-available/default три раза.

так что теперь у меня есть
/ и т.д. / apache2 / сайты-доступные / сайт1
/ и т.д. / apache2 / сайты-доступные / сайт2
/ и т. д. / apache2 / сайты-доступные / сайт3

Все они выглядят (с соответствующими именами 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

Что, кажется, работает, за исключением того, что одновременно работает только один из vhosts (в том числе по умолчанию). Что я делаю не так?


When I run the reload command I get

  • Перезагрузка конфигурации веб-сервера apache2
    apache2: не удалось надежно определить полное доменное имя сервера,
    используя 127.0.1.1 для ServerName
    [Пт, 15 апреля, 10:45:27 2011] [предупредить] NameVirtualHost *: 80 не имеет VirtualHosts

Я столкнулся с той же проблемой. После нескольких проб и ошибок я исправил проблему, добавив NameVirtualHost *:80 к sites-available/default. И удаление / не добавление той же строки в любые другие файлы в sites-available /

Я не знаю, почему это сработало.

На основе вашего файла hosts вы сопоставляете эту строку:

<VirtualHost site1.local>

к этому:

<VirtualHost 127.0.0.1>

Вы хотите:

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

Также вам могут понадобиться:

NameVirtualHost *:80

Сообщение об ошибке: «Не удалось надежно определить полное доменное имя сервера ...» является причудливой проблемой на сервере apache2 и не может предотвратить или остановить сервер apache2 от локального «VirtualHost» в вашем «ServerName». Прочтите ссылку, которую дал Шейн Мэдден, поскольку решение есть. Другое «предупреждающее» сообщение: «NameVirtualHost *: 80 не имеет VirtualHosts» помешает вам добиться успеха.

Проблема 1: Решение для полного доменного имени простое, и каждое из этих двух решений, кажется, имеет успех для разных пользователей - так же поступайте и с тем, и с другим: добавьте текстовую строку «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: порт в другом. Как только вы поймете всю серьезность этих отношений, тогда чтение руководства и попытки их настройки будут работать.

Проблема 3: Скрытая проблема: зная проблему 2, теперь вам нужно убедиться, что этого не происходит в файлах вашего ДРУГОГО сайта, а именно в файле по умолчанию. Если у файла по умолчанию есть VirtualHost *: 80, а у вашего site1 - VirtualHost 127.0.0.1 И ваш ports.conf имеет NameVirtualHost 127.0.0.1, тогда site1 и ports.conf находятся в гармонии, НО теперь значение по умолчанию больше не подходит и будет вызвать ошибку.

Повесить там! Это непросто ...