пятница, 9 января 2009 г.

Виртуальные хосты на UNIX-сервере доступ из локальной сети

Задача такова: на корпоративном сервере поднять несколько виртульных хостов для тестирования веб-проектов и заливки контента, не поднимая DNS. Сервер имеет один ip и виден только в локальной сети. Проекты должны быть доступны пользователям из локальной сети.
У меня конфигурационный файл Apache лежит в /usr/local/etc/apache22/httpd.conf.

#ee /usr/local/etc/apache22/httpd.conf

Находим следующее

Listen 80

добавляем

Listen 81

и так для каждого виртуального хоста устанавливаем порт.
Далее добавляем для наших хостов

NameVirtualHost 192.168.0.198 # ip сервера

VirtualHost 192.168.0.198:80 # заключить в <> на самом деле, а то блоггер не хочет показывать
# сервер слушает запрос на порт 80 и выдает виртуальный хост first
ServerName first # имя виртуального хоста
DocumentRoot "/home/first/www" # DocumentRoot виртуального хоста
ScriptAlias /cgi/ "/home/first/www/cgi"
ErrorLog /home/first/error.log # лог ошибок виртуального хоста
CustomLog /home/first/access.log common # общий лог виртуального хоста
< /VirtualHost >

VirtualHost 192.168.0.198:81 # заключить в <> на самом деле, а то блоггер не хочет показывать
ServerName second
DocumentRoot "/home/second/www"
ScriptAlias /cgi/ "/home/second/www/cgi"
ErrorLog /home/second/error.log
CustomLog /home/second/access.log common
< /VirtualHost >

Перезапускаем apache. Набираем в браузере http://192.168.0.198:80, получаем first,http://192.168.0.198:81 - second.
Если что-то не так читаем логи. Обычно проблема в синтаксисе или директории с ошибками напечатали :-).

Если есть желание ходить с машин в сети по именам хостов, а не по ip:порт, тогда
создаем name-based виртуальные хосты.

VirtualHost first # заключить в <> на самом деле, а то блоггер не хочет показывать
ServerName first
DocumentRoot "/home/first/www"
ScriptAlias /cgi/ "/home/first/www/cgi"
ErrorLog /home/first/error.log
CustomLog /home/first/access.log common
< /VirtualHost >

И так для каждого виртуального хоста.

Правим файл /etc/hosts. Во-первых, самой первой строкой в этом файле должна быть строка

192.168.0.198 localhost localhost.my.domain

Добавляем

192.168.0.198 localhost localhost.my.domain first
192.168.0.198 localhost localhost.my.domain second

Ну и подобные записи надо будет сделать на всех машинах с которых хотим иметь доступ.
Если это WINDOWS, то правим WINDOWS\system32\drivers\etc\hosts, добавляем записи вида:

192.168.0.198 first
192.168.0.198 second

Теперь по http://first будем иметь первый виртуальный хост на сервере...

0 коммент.:

Отправить комментарий