Автор: Котеров Д.В. Итак, вы установили 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, не будут активизированы.
|