Каталог статей
Меню сайта


Категории статей
Полезные советы [131]


Форма входа


Поиск по статьям


 Полезные ссылки



Главная страница » Каталог статей » Полезные советы
Виртуальные хосты Apache
Виртуальные хосты Apache
Автор: Котеров Д.В.

Итак, вы установили Apache и получили, таким образом, каталог z:/home/localhost/wwwдля хранения документов и z:/home/localhost/cgiдля CGI. Однако в Интернете вы поддерживаете (или, скорее всего, будете поддерживать) несколько серверов, а Apache создал для вас только один. Конечно, можно структуру этих нескольких серверов хранить на одном сервере, однако проще и удобнее было бы создать несколько виртуальных хостов с помощью Apache. В нашем распоряжении есть два вида виртуальных хостов: отдельные для каждого IP-адреса или же использующие один общий IP-адрес (так называемые name-based хосты — хосты, определяемые по имени). В тренировочных целях мы рассмотрим оба варианта, а именно, создадим хост hacker, задействующий тот же адрес, что и localhost, а также хост crackerс адресом 127.0.0.2

Примечание

Конечно, вместо "hacker"и "cracker"вам нужно будет указать желаемые имена ваших виртуальных хостов. Советуем назвать их так же, как и на вашем настоящем Web-сервере, но только без "суффикса" .ruили .com— это может многое упростить при программировании сценариев.

Как это принято в Unix, каждый сервер будет представлен своим каталогом в z:/homeс именем, совпадающим с именем сервера (мы уже проделывали нечто подобное с хостом localhost). Например, сервер hackerбудет храниться в каталоге z:/home/hacker, который вам необходимо создать прямо сейчас (конечно, вместе с его подкаталогами cgiи www, как мы делали это ранее), а хост cracker— в каталоге z:/home/cracker.В этих каталогах будут находиться:

файлы access.logс журналом доступа к виртуальному серверу;
файлы errors.logс журналом ошибок сервера;
каталог www, где, как обычно, будут размещаться HTML-документы;
каталог cgiдля хранения CGI-программ.

Для установки виртуальных хостов необходимо внести некоторые изменения в файл конфигурации Apache httpd.conf(см. выше), а также в некоторые файлы Windows. Опишем, что для этого нужно сделать.

Откройте файл httpd.conf (можете для этого воспользоваться уже упоминавшимся выше ярлыком Edit configuration.Перейдите в конец файла, вам предстоит добавить туда несколько строк. Вставьте следующие строки в конце файла после всех комментариев

Листинг 4.3. Настройка виртуальных хостов

NameVirtualHost 127.0.0.1
#----localhost

ServerAdmin webmaster@localhost
ServerName localhost
DocumentRoot "z:/home/localhost/www"
ScriptAlias /cgi/ "z:/home/localhost/cgi/"
ErrorLog z:/home/localhost/error.log
CustomLog z:/home/localhost/access.log common

#----hacker

ServerAdmin webmaster@hacker.ru
ServerName hacker
DocumentRoot "z:/home/hacker/www"
ScriptAlias /cgi/ "z:/home/hacker/cgi/"
ErrorLog z:/home/hacker/error.log
CustomLog z:/home/hacker/access.log common

#----cracker

ServerAdmin webmaster@cracker.ru
ServerName cracker
DocumentRoot "z:/home/cracker/www"
ScriptAlias /cgi/ "z:/home/cracker/cgi/"
ErrorLog z:/home/cracker/error.log
CustomLog z:/home/cracker/access.log common

Замечание

Обратите внимание на то, что мы добавили дополнительно секцию для хоста localhost. Если этого не сделать, то все запросы к нему (то есть, по адресу 127.0.0.1) будут обработаны name-based хостомhacker. Происходит это, видимо, из-за того, что хосты в секции имеют больший приоритет при обработке, чем главный хост, который мы создали ранее.

Директива NameVirtualHostговорит серверу, что указанный IP-адрес может использоваться несколькими виртуальными хостами, поэтому для обработки запросов, поступающих на этот адрес, нужно привлекать протокол HTTP 1.1 (который, собственно, и поддерживает технику работы с name-based хостами).

При желании можно добавить и другие параметры в блоки (например, DirectoryIndexи т. д.) Не переопределенные параметры наследуются виртуальным хостом от главного. Однако не советую злоупотреблять настройками в этих секциях — лучше сделать их в файле htaccessв директории нужного хоста, потому что компания, которая предоставляет (будет предоставлять) вам "настоящие" виртуальные хосты в Интернете, вряд ли позволит менять данные блоки.

Но как же система узнает, что хост crackerсопоставлен с адресом 127.0.0.2, а hacker— name-based хост. Для решения проблемы надо немного подправить системный файл hosts, который находится в каталоге C:WINDOWSдля операционных систем Windows 95/98/Millenium иC:WINNTSYSTEM32DRIVERSetcдля Windows NT и Windows 2000.

Внимание

Не путайте файл hosts(без расширения) с файлом hosts.sam, который, скорее всего, также расположен в том же каталоге! Последний файл является просто демонстрационным примером Microsoft и никак не используется системой. Если файла hostsне существует, его необходимо создать.

Файл hosts— обычный текстовый файл, и в него может быть заранее включена только одна строка:

127.0.0.1 localhost

Именно эта строка и задает соответствие имени localhostадресу 127.0.0.1.

Замечание

Ради справедливости следует сказать, что имя localhostработает и без указанной выше строки. Ну и выдумщики же эти парни из компании Microsoft!

Для нашего виртуального хоста надо добавить соответствующую строчку, чтобы файл выглядел так:

Листинг 4.4. Файл hosts

127.0.0.1 localhost hacker
127.0.0.2 cracker

Обратите внимание на то, что хост hackerописан на той же строке, что и localhost. Дело в том, что в файле hostsдолжны указываться только уникальные IP-адреса. Если же одному адресу сопоставляется сразу несколько хостов, то один из них (тот, который идет первым) объявляется главным, а остальные — его псевдонимами. В нашем случае localhost— главный, а hacker— его псевдоним. Apache при получении запроса на адрес 127.0.0.1узнает, что он пришел хосту с именем hacker, и активизирует соответствующий блок .

Итак, мы создали виртуальные хосты со следующими свойствами:

Хост hacker:
имя — hacker;
доступен по адресу http://hacker;
расположен в каталоге z:/home/hacker;
каталог для хранения документов — z:/home/hacker/www, доступный по адресу http://hacker/;
каталог для CGI — z:/home/hacker/cgi, доступный по адресу http://hacker/cgi/;
файлы журналов хранятся в z:/home/hacker.

Хост cracker:
имя — cracker;
доступен по адресу http://cracker или http://127.0.0.2;
размещен в каталоге z:/home/cracker;
каталог для хранения документов — z:/home/cracker/www, доступен по адресу http://cracker/;
каталог для CGI — z:/home/cracker/cgi, доступен по адресу http://cracker/cgi/;
файлы журналов содержатся в z:/home/cracker.

Замечание

Необходимо заметить, что главный хост (невиртуальный, тот, который мы создали ранее) попрежнему доступен по адресу http://127.0.0.1или http://localhost. Более того, его директория cgi-bin"видна" всем существующим виртуальным хостам, так что вы можете ее использовать.

После всех изменений не забывайте перезапускать Apache.

Внимание

Просто завершить сервер, нажав на кнопку Закрыть в правом верхнем углу его окна, недостаточно — нужно воспользоваться пунктом Stop Apache в меню Пуск .Программы .Apache Web Server .Management. В противном случае закроется только окно Apache, а сам сервер останется работать в фоновом режиме, так что изменения, внесенные в httpd.conf, не будут активизированы.

Категория: Полезные советы | Добавил: adlocal (2006-06-06) | Автор: Котеров Д.В.
Просмотров: 1229 | Рейтинг: 0.0 |
 
Комментарии
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
 
 
e-mail: limit@russian.ru связь с Админами.  ICQ: 208-652-495