Полноценный сервер у вас дома

Многие web-программисты в начале карьеры сталкивались с проблемой тестирования своих "произведений" на домашней машине. В таких ситуациях обычно приходилось сначала установить весьма непростой в настройке сервер, затем подключить базу данных, установить интерпретаторы языков программирования (будь-то PHP или Perl), а уж затем протестировать все это.

Для опытных пользователей это не составит труда, а вот начинающим пришлось бы "поломать голову" над процессом настройки. Так что те, у кого все работает и сервер установлен, могут дальше не читать. Хотя, на мой взгляд, статья могла бы быть полезна и им.


С чем имеем дело

Недавно у моего знакомого (начинающего php-программиста) "слетел" по непонятным причинам сконфигурированный Internet Information Services, и все, так или иначе связанное с вебом, естественно, перестало работать. Разбираться в причинах произошедшего мне не очень хотелось, и выход оставался один - переустановить данный компонент операционной системы. Но, как назло, под руками не оказалось установочного диска, а времени на поиски не было - работа не могла ждать. И я, как более опытный в этом деле, предложил воспользоваться хорошо зарекомендовавшим себя "Джентльменским набором Web-мастера", известным также как "Денвер". Его создатели хорошо постарались, так как базовый комплект содержит все самое необходимое, и в то же время уместили это в 2,2 Мб.

Итак, что мы имеем? Самое главное, конечно же, это дистрибутив "Денвера", всегда свежая версия которого находится по адресу dklab.ru/chicken/web/dis/Base. Пакет постоянно обновляется, исправляются ошибки, вносятся изменения, поэтому довольно часто выходят новые версии.

Текущая версия имеет название: Base_2004-01-04_a1.3.27_p4.3.0_m3.23.53_ pma2.3.0.exe . В ее состав вошли:

  1. Apache, SSI, mod_rewrite, mod_php.
  2. PHP4 с поддержкой GD и MySQL.
  3. MySQL с поддержкой транзакций (mysqld-max).
  4. phpMyAdmin - система управления MySQL через Web-интерфейс. Полностью заменяет командную строку MySQL.
  5. Ядро Perl без стандартных библиотек (они поставляются отдельно).
  6. Эмулятор sendmail (отладочная "заглушка", складывающая приходящие письма в /tmp); поддерживается работа совместно с PHP и Perl.
  7. Система управления виртуальными хостами, основанная на шаблонах. Чтобы создать новый хост, вам нужно лишь добавить директорию в каталог /home, править конфигурационные файлы не требуется.
  8. Система управления запуском и завершением.
  9. Инсталлятор (нечто вроде InstallShield).


Инсталляция

Все дистрибутивы представляют собой архивы в формате 7-Zip. Такой формат разработчики выбрали потому, что он дает наилучшую степень сжатия из всех протестированных ими. Надеюсь, пользователи это оценят.

После того, как вы скачали дистрибутив, нужно его запустить. Вначале архив будет распакован во временную директорию (нужно немного подождать), а затем автоматически запустится инсталлятор.

Сам инсталлятор написан на Perl, а расширение имеет .BAT, поэтому проблем с запуском не должно наблюдаться.

И первое, что перед вами появится, это будет привычное "ДОСовское" окно с командной строкой.

Далее вам предложат установить "Денвер" в каталог C:\WebServers (он стоит по умолчанию, однако ничто не мешает выбрать любой другой). Настоятельно рекомендую устанавливать комплекс в каталог первого уровня - то есть, C:\WebServers, а не, например, C:\My\ WebServers. Дело в том, что инсталляторы пакетов расширений ищут базовый комплект именно на первом уровне по всем дискам. И если не находят, заставляют вас ввести имя директории вручную. Наверное, вам не нужны лишние проволочки при установке расширений?.. Если вы соглашаетесь, жмите Enter. В указанном каталоге будут расположены абсолютно все компоненты системы, и вне его никакие файлы в дальнейшем не создаются (исключая ярлыки на Рабочем столе).

Затем вам предложат ввести имя виртуального диска, который будет связан с только что указанной директорией. Рекомендуем согласиться со значением по умолчанию (Z:). Важно, что диска с этим именем еще не должно содержаться в системе - чаще всего так и происходит с диском Z:. (При дальнейшем использовании виртуальный диск будет автоматически подключаться и отключаться на любой системе и как вы захотите.) Вводим его и продолжаем установку.

После этого начнется копирование файлов дистрибутива, а в заключение будет задан вопрос, как именно вы собираетесь запускать и останавливать комплекс. У вас есть две альтернативы:

  1. Создавать виртуальный диск при загрузке машины (естественно, инсталлятор позаботится, чтобы это происходило автоматически), а при остановке серверов его (диск) не отключать. На мой взгляд, это наиболее удобный режим, и я сам пользуюсь только им.
  2. Создавать виртуальный диск только по явной команде старта комплекса (при щелчке по ярлыку запуска на Рабочем столе). И, соответственно, отключать диск от системы - при остановке серверов.

Собственно, вот и все. Вы сможете выполнить установку комплекса, имея всего 2 клавиши на клавиатуре: Enter и Y (чтобы ввести Yes).

Наконец, установка завершена. Сразу же щелкайте по созданному инсталлятором ярлыку Start servers на Рабочем столе, а затем, дождавшись, когда все консольные окна исчезнут, открывайте браузер и набирайте в нем адрес: http://localhost. Выходить из интернета не обязательно. При этом в трэе появится соответствующий значок (розовое перышко).

Сразу же в окне браузера должно отобразиться следующее:

Если тестовая страница все же не загрузится, проверьте:

  1. Отключен ли у вас прокси-сервер в настройках браузера?
  2. Запущен ли "Денвер"? Если да, нет ли ошибок при щелчке на пиктограмме пера (справа внизу)?
  3. Не запущен ли у вас какой-то другой Web-сервер, который мешает "Денверу" (часто бывает в Windows XP)? Например, Microsoft IIS? Если да, отключите его.

Наконец, если ничего не помогает, отправьте детальное описание ошибки в форум на сайте разработчиков, а заодно там же загляните на страничку FAQ: forum.dklab.ru/denwer.


Работа с виртуальными хостами

Если вы занимаетесь разработкой web-сайтов, вам наверняка хотелось бы обслуживать одним сервером сразу несколько хостов. Иными словами, введя в браузере путь http://localhost, вы попадете на один сайт, а, напечатав http://test.ru, - совсем на другой (но тоже на локальной машине).

До недавнего времени задача добавления в систему нового виртуального хоста была довольно-таки кропотливой и состояла из следующих этапов:

  1. Создание дерева каталогов сайта. Обычно каждый сайт представлен отдельной директорией в /home/ - так, сайт localhost содержится в /home/localhost/. Однако сайт и его директория документов - вещи разные, поэтому первую обычно помещают по адресу /home/localhost/www/ (а директорию с CGI-скриптами - в /home/localhost/cgi/). Для определенности далее будем полагать, что нужно создать хост с именем test.ru.
  2. Модификация системного файла hosts, чтобы связать test.ru с IP-адресом локальной машины - 127.0.0.1. Таким образом, все виртуальные хосты на локальной машине имеют один и тот же IP-адрес (это позволительно и даже желательно).
  3. Правка файла конфигурации Apache httpd.conf. Именно в этот момент и возникало большинство проблем: что-то забыли, что-то не дописали, и т. д.
  4. Перезапуск сервера, чтобы изменения вступили в силу.

С появлением проекта "Денвер" ситуация упростилась. Теперь, чтобы добавить новый хост, вам нужно проделать следующее:

  1. Создать в папке /home директорию с именем, совпадающим с именем виртуального хоста (в нашем случае test.ru). Эта директория будет хранить директории документов доменов третьего уровня для test.ru. Непонятно?.. Например, имя abc.test.ru связывается сервером с директорией /home/test.ru/abc/, а имя abc.def.test.ru - с /home/test.ru/abc.def/. Ну и, конечно, поддиректория www соответствует адресам www.test.ru и просто test.ru. В общем, дешево и сердито. На рисунке показано, как может выглядеть директория /home.
  2. Перезапустить сервер, воспользовавшись, например, ярлыком Restart servers на Рабочем столе.

Это все, что нужно сделать. "А где же, - вы спросите, - модификация httpd.conf и файла hosts?.." Ее просто нет. Файл httpd.conf вообще не меняется никогда. Чуть посложнее с файлом hosts: он модифицируется автоматически, подстраиваясь под текущую конфигурацию каталогов в /home. При этом используется весьма недетский алгоритм для распознавания, какие хосты были внесены "Денвером", а какие пользователь добавил самостоятельно, вручную (если он, конечно, захочет это сделать). То есть, автоматическое изменение файла hosts еще не означает, что в нем пропадут все комментарии и вы не сможете больше никогда редактировать его "руками". И, конечно, при остановке комплекса по ярлыку Stop servers файл hosts восстанавливается в то состояние, которое и должно быть.

Я не говорю "в предыдущее", потому что это, вообще говоря, не так. Представьте, что комплекс запущен, и пользователь открыл hosts в "Блокноте" и добавил в него какой-нибудь хост. Например, он назначил домену microsoft.ru тот же IP-адрес, что имеет porno.com. После останова серверов этот адрес не удалится, а будет сохранен в исходном виде, в то время как все виртуальные хосты "отключатся". Действует принцип: "вычищай только то, что нагадил сам".


Проблемы с прокси-сервером

Многие версии Windows поставляются со включенным по умолчанию прокси-сервером. Это может вызвать кое-какие проблемы при работе с "Денвером" (впрочем, легко разрешимые).

  1. Если после запуска "Денвера" страница http://localhost не работает, вероятнее всего, вам нужно отключить прокси-сервер в настройках браузера. Для "простых" хостов (вроде localhost, test, dklab и т. д.) обычно достаточно флажка "Не использовать прокси-сервер для локальных адресов" на вкладке Свойства обозревателя - Подключение - Настройка сети - Дополнительно.
  2. Если localhost работает, а test1.ru (и вообще хосты, имя которых состоит из нескольких частей) - нет, то, вероятно, ваш браузер не может распознать последний хост как локальный. Такое, увы, бывает. Вам необходимо либо полностью отключить прокси-сервер, либо же перечислить хосты в списке Подключение - Настройка сети - Дополнительно - Исключения.

Вот, в принципе, и все - установка завершена и все работает. Теперь, чтобы тестить ваши работы, заходим по пути C:\WebServers\home\localhost (или test1.ru, test2.ru)\www, там размещаем свои странички, скрипты и т.п.


Выводы

Простой надежный комплекс, к тому же легко масштабируемый в плане составных компонентов. Вы всегда можете установить дополнительные программы, посетив адрес web.dklab.ru. Каждый дистрибутив снабжен простым и удобным инсталлятором, предназначенным для настройки компонентов под конкретную систему. Сервером легко управлять: на рабочем столе появляются ярлыки, позволяющие запустить, перезагрузить и остановить его.

Однозначно нужная вещь в домашнем хозяйстве, рекомендую всем.

Удачи!

Михаил БРОВКО,
my_mind@tut.by

Версия для печатиВерсия для печати

Номер: 

16 за 2004 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!