Я только что установил 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 (в том числе по умолчанию). Что я делаю не так?
- Перезагрузка конфигурации веб-сервера 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 находятся в гармонии, НО теперь значение по умолчанию больше не подходит и будет вызвать ошибку.
Повесить там! Это непросто ...