Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

3.3. Виртуальные хосты Apache

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


ВНИМАНИЕ

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


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

• файлы ассеss.log с журналом доступа к виртуальному серверу;

• файлы errors.log с журналом ошибок сервера;

• директория www, где, как обычно, будут храниться НТМL-документы;

• директория cgi дляхранения CGI-программ.

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

Откройте файл httpd.conf (можете для этого воспользоваться ярлыком Edit configuration в меню Пуск > Программы > Apache Web Server > Management). Добавьте следующие строки в конце файла после всех комментариев:

NameVirtualHost 127.0.0.1

#—localhost

<VirtualHost 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

</VirtualHost>

#—my_host

<VirtualHost my,_host>

ServerAdmin webmaster@my_host.ru

ServerName my_host

DocumentRoot "z:/home/my host/www"

ScriptAlias /cgi/ "z:/home/my_host/cgi/"

ErrorLog z:/home/my_host/error.log

CustomLog z:/home/my host/access.log common

</VirtualHost>

#—my_host_new

<VirtualHost my_host_new>

ServerAdmin webmaster@my_host_new.ru

ServerName my_host_new

DocumentRoot "z:/home/my_host_new/www"

ScriptAlias /cgi/ "z:/home/my_host_new/cgi/"

ErrorLog z:/home/my_host_new/error.log

CustomLog z:/home/my_host_new/access.log common

</VirtualHost>


ВНИМАНИЕ

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


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

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

Нокакже система узнает, что хост my_host_new сопоставлен с адресом 127.0.0.2, a my_host — вообще name-based-хост? Для решения проблемы надо немного подправить системный файл hosts, который находится в директории с:\windows для операционных систем Windows 95/98/Millenium и C:\winnt\system32\drivers\... для WindowsNT/2000/XP.


ВНИМАНИЕ

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


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

127.0.0.1 localhost

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

127.0.0.1 localhost my_host

127.0.0.2 my_host_new

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

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

Хост my_host;

имя — my_host;

доступен по адресу httр://my_host;

расположен в директории z:/home/my_host;

директория для хранения документов — z:/home/my host/www, доступная по адресу http://my_host/;

директория для CGI-скриптов — z:/home/my_host/cgi, доступная по адресу http://my_host/cgi/;

файлы журналов хранятся в z:/home/my_host.

Хост my_host_new;

имя — my_host_new;

доступенпо адpecy http://my_host_new или http://127.0.0.2;

расположен в директории z:/home/my_host_new;

директория для хранения документов — z:/home/my_host_new/www, доступная по адресу http://my_host_new/;

директория для CGI-скриптов — z:/home/my_host_new/cgi, доступная по адpecy http://my_host_new/cgi/;

файлы журналов хранятся в z:/home/my_host_new.

Заметьте, что главный хост (невиртуальный, тот, который мы создали ранее) по-прежнему доступен по адресу httр://127. 0.0.1 или http://localhost. Более того, его директория /cgi-bin/ «видна» всем созданным виртуальным хостам, так что вы можете ее использовать.

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


ВНИМАНИЕ

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


Заключение

Данная глава описывает процесс установки сервера Apache. Если вам надо более подробно ознакомиться с принципами профессиональной установки сервера, изучите полную документацию по установке.

<< Предыдущий параграф Следующий параграф >>
Оглавление