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

Виртуальные хосты на основе имен в Apache

У меня небольшие проблемы с настройкой виртуальных хостов на основе имен.

Я могу запустить сервер с помощью «service apache2 start» с пустым файлом httpd.conf, и он будет работать со всем, что указывает на / var / www, как и ожидалось.


When I fill httpd.conf with:

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot /www/kevins_playground
ServerName home.coolkev.com

# Other directives here

</VirtualHost>

<VirtualHost *:80>
DocumentRoot /www/flatline_and_co
ServerName www.flatline_and_co.com

# Other directives here

</VirtualHost>

Я получаю эту ошибку при запуске службы apache2 start

root@kevin-server:/etc/apache2# service apache2 start
 * Starting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Thu Jul 26 20:10:01 2012] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.

Я нашел решение,

  1. Я удалил все свои изменения в httpd.conf, для меня это оставило пустой файл.
  2. Я скопировал существующий файл сайта по умолчанию в ./sites-available/ для двух моих виртуальных хостов.
  3. Я отредактировал эти два файла и заменил значения там, где это имело смысл, я думаю, должно быть очевидно, где их нужно изменить (базовая папка веб-сайта, URL-адрес веб-сайта).
  4. Я создал символические ссылки, как и вы, в ./sites-enabled/
  5. Я перезапустил веб-сервер sudo service apache2 restart, и он сработал.

Я думаю, что проблема возникла из-за того, что во время анализа файлов Apache обнаружил два файла с "<VirtualHost>", мой httpd.conf и конфигурацию веб-сайта по умолчанию в ./sites-available/

Пока вы не коснулись виртуального хоста по умолчанию (который уже содержит директиву NameVirtualHost *: 80), вы не должны дублировать поведение по умолчанию.

Поскольку вам приходится страдать от Debuntu, почему бы не пойти с ним и не поместить свои vhosts в / etc / apache2 / sites-enabled /, по одному на файл?