В этой статье написано, как создавать несколько виртуальных хостов на локальной машине. Данное действие необходимо уметь делать веб-мастерам, когда они разрабатывают несколько сайтов.
Вначале небольшое объяснение.
Что такое виртуальный хост? Это такая настройка локального веб-сервера, при которой веб-сервер начинает откликаться на заданное имя, а не только на IP 127.0.0.1 или псевдоним localhost. То есть, при настройке виртуального хоста на имя site.ru, в браузере по этому URL начнет отвечать локальный веб-сервер.
Веб-сервер можно настроить на несколько имен сайтов. Тогда веб-сервер начнет выдавать страницы, соответсвующие каталогу, в котором находятся данные для указанного имени. Например, есть два виртуальных хоста - site.ru и money.com. Для site.ru настроен рабочий каталог /var/www/site.ru, а для money.com настроен рабочий каталог /var/www/money.com. Если теперь в браузере обратиться к site.ru, то веб-сервер будет выдавать страницы из каталога /var/www/site.ru, а если обратиться к money.com, то веб-сервер будет генерировать страницы из каталога /var/www/money.com. Как сделать такую настройку и написано в данной статье.
В Debian 5.x.x, сервер Apache-2 сразу после установки готов работать с виртуальными хостами. Но настроен только на один (default) хост, который доступен как localhost. Чтобы добавить еще один виртуальный хост, надо сделать следущее:
1. В каталог /etc/apache2/sites-available нужно добавить пустой файл с произвольным именем. Для удобства, лучше давать имя файла, содержащее имя виртуального хоста. Например, если планируется добавить виртуальный хост с именем studio.ru, надо задатьдать имя файла studio.ru.conf.
2. В этот файл надо вписать (примерно) следующее:
<VirtualHost *:80>
ServerName studio.ru
ServerAlias www.studio.ru
DocumentRoot "/var/www/studio"
<Directory "/var/www/studio">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
Где:
- ServerName, ServerAlias - это URL, набираемый в браузере, на который должен откликаться данный виртуальный хост;
- DocumentRoot - это корневая директория данного виртуального хоста;
- Секция Directory - настройка прав доступа к указанной директории. В данном случае настраиваются права доступа к корневой директории виртуального хоста.
Нужно обратить внимание на параметр секции VirtualHost. Здесь он написан как "*:80". Но обязательно нужно заглянуть в файл /etc/apache2/sites-available/default и посмотреть, какой параметр написан там в такой же секции VirtualHost. Если написано "*", то в нашем файле надо так же написать "*".
Другоми словами, нужно заглянуть в файл /etc/apache2/ports.conf. Там нужно найти директиву:
NameVirtualHost *:80
Какое значение стоит в этой директиве (здесь - "*:80"), такое значение и нужно прописать в качестве параметра секции VirtualHost во всех файлах директории /etc/apache2/sites-available, иначе хосты видны не будут.
Частая ошибка - когда в /etc/apache2/ports.conf прописано "*.80", а в файле хоста в секции VirtualHost прописано "*". Несмотря на то, что маска "*" покрывает маску "*.80", сервер Apache не понимает такой записи. При такой настройке, сервер Apache не найдет нужного хоста!
3. Надо перейти в каталог /etc/apache2/sites-enabled и создать там символическую ссылку на созданный нами файл:
# cd /etc/apache2/sites-enabled
# ln -s /etc/apache2/sites-available/studio.ru.conf studio.ru.conf
4. Необходимо перезапустить Apache командами:
# /etc/init.d/apache2 stop
Stopping web server: apache2 ... waiting .
# /etc/init.d/apache2 start
Starting web server: apache2.
в момент перезапуска надо смотреть, не появляются ли в консоли сообщения об ошибках или предупреждения. В нормально сконфигурированном Апаче никаких сообщений о ошибках (и даже предупреждений!) выдаваться не должно.
5. Завершающее действие - нужно открыть файл /etc/hosts и прописать там новую строку следующего содержания:
127.0.0.1 studio.ru
это позволит браузеру обращаться локально к Апачу, а не искать данный сайт в интернете.
Все, конфигурирование закончено. Никаких перезагрузок не требуется.
Можно в браузере набрать URL http://studio.ru/index.html, и должен открыться файл /var/www/studio/index.html (если он есть). Таким образом, сразу видно, что виртуальный хост создался, и отображается в браузере. Подобным образом добавляются и другие виртуальные хосты.