Денвер - мастерская web разработчика за 15 мин

Автор статьи: Feathery ©
Сайт Автора: нет
E-mail Автора: bird@feathery.ru
Дата публикации: 07.04.2005

Денвер - мастерская web разработчика за 15 мин.
Ты пишешь скрипты для своего сайта? Нет? Нужно ведь ставить никсы, настраивать веб-сервер, Perl, PHP, базы данных. Придется читать длиннющие, запутанные, порой противоречащие друг другу мануалы, попутно разбираться в тонкостях работы с малознакомой операционкой. Ужасно, правда? Я тебя понимаю.

А веришь, что, скачав около 7 Мб из инета, через полчаса на своей машине ты будешь иметь полноценную среду для разработки и отладки веб-скриптов? Аpache, SSI, ядро Perl, PHP4 с GD и MySQL. MySQL с поддержкой транзакций (mysqld-max), phpMyAdmin - полная система управления MySQL через Web-интерфейс. Под Windows. С виртуальными хостами и Sendmail. Не веришь? А зря! Читай!

Знакомьтесь - это Денвер!
Все не просто, а очень просто. Денвер (Джентльменский Набор Web-Разработчика, Д.Н.W.Р.) - это модульная система, позволяющая за несколько шагов организовать целую лабораторию для веб-программиста. Ядро системы - базовый комплект. Оно весит всего чуть больше двух метров. Слить его можно по адресу www.dklab.ru/chicken/web/dis/Base. Щелкай по exe'шнику. Он распакуется во временную директорию, и появится консольное окошко - процесс установки начался. Кстати, то, что ты видишь, - это уже результат работы Perl. Инсталляшка написана именно на нем. Интерпретатор уже запущен. На твоей машине исполняется самый настоящий скрипт. Я же говорил, что все просто.

Жми Enter, как он просит. Надо выбрать установочный каталог. Нет-нет, никаких Program Files! Рекомендуется создавать рабочий каталог Денвера в корне диска, на котором будет стоять система (у меня это d:\denver), потому что установщики дополнительных модулей сами ищут его по всем дискам, но только в дирах первого уровня. Это сэкономит потом твое время. Деинсталляция системы, к слову, сводится к простому удалению этой директории. Итак, каталог создан и доступен нам через новый виртуальный диск. Для этого не нужно ставить никаких дополнительных программ, используется стандартная утилита subst из дистрибутива винды. Для имени диска выбирай букву ближе к концу алфавита - так меньше вероятности, что это спровоцирует конфликт. По умолчанию предлагается "Z:". Если эта буква свободна - соглашайся. Еще пара нажатий Enter, и пошел процесс копирования нужных файлов.

Теперь нам нужно выбрать режим запуска Денвера. Их два, и отличаются они тем, как система будет обращаться с виртуальным диском: будет ли он создаваться при старте ОС и оставаться до конца сеанса, либо будет существовать только во время работы Денвера и убиваться после ее завершения. Первый вариант позволяет работать с перлом из командной строки, не запуская Денвер. Зато второй освободит имя диска, когда ты остановишь работу серверов. Я выбрал второй.

Последнее, что спросит у тебя инсталлятор: создавать ли иконки на рабочем столе для запуска, рестарта и остановки серверов. Создавать, конечно!

Все. На этом установка закончена!

Что у нас получилось
Щелкай на "Start servers". В консольных окошках отработает стартовый скрипт, и в трее появится знаменитое перышко - логотип Apache. Запускай браузер и пиши http://localhost.

Перед тобой открылась страничка, сгенерированная твоим только что запущенным сервером. С рекламой - куда уж без нее. Ну ладно, дело не в этом. Смотрим чуть ниже. Там расположены ссылки, позволяющие протестировать работу нашей системы, линк на phpMyAdmin - администраторский инструмент управления базой - и маленький скриптик для быстрого добавления нового пользователя в базу данных.

Осматриваем владения
Давай посмотрим, что у нас есть на только что созданном виртуальном диске и каково назначение этих папок и файлов. В корне диска четыре директории: usr, tmp, home, etc - и файлик ридми (но тебе же будет лень его читать, правда?).

1) etc. В нем находятся три программы старта и стопа серверов (ярлыки на них лежат на десктопе), скрипты на Perl и информация о конфигурации системы (в каком порядке и с какими параметрами будут запущены те или иные сервисы).
2) home. Тут находятся виртуальные хосты нашего сервера и все их содержимое. Позже я подробнее остановлюсь на этом.
3) tmp. Временный каталог. Нам с тобой он, прежде всего, будет интересен вот чем: помнишь, я говорил, что в системе есть Sendmail? На самом деле я немножко слукавил. Сендмайл здесь неполноценный, отправить письмо через него ты не сможешь, да Денвер и не предназначен для этого. Тем не менее, скрипты, требующие отсылки почты для своей работы, вполне удовлетворятся и этой урезанной версией. Все письма, отсылаемые скриптами, сваливаются в temp\!sendmail. Посмотреть их содержимое можно как непосредственно с диска, так и по ссылке http://localhost/Test/sendmail/index.php. Там же можно протестировать работу Sendmail.
4) usr. Возможно, самый важный каталог, если такое выражение вообще допустимо. В нем находятся исполняемые файлы интерпретаторов PHP и Perl, веб-сервера, базы данных, а также Sendmail. Наибольший интерес представляет домашний каталог Апача (usr\local\apache). В папке bin лежат две утилиты: ab.exe (Apache Bench) для проверки производительности веб-сервера и htpasswd.exe для создания аутентификационных файлов пользователей. В дире conf расположены три главных настроечных файла Апача. Это httpd.conf - основной конфигурационный файл, vhosts.conf - описание виртуальных хостов (генерируется автоматически при старте системы), а также mime.types - правила обработки данных того или иного типа, которые посылаются сервером. Настройки PHP находятся в файле \usr\local\php\php.ini. Конфигурация MySQL лежит в /usr/local/mysql/my.cnf.

Запускаем www.microsoft.com на своей машине, или Виртуальные хосты

Виртуальные хосты - очень удобный механизм. Благодаря ему можно на одной физической машине с одним IP-адресом содержать сразу несколько сайтов, соответствующих разным доменным именам. Несмотря на то, что запросы физически шлются на один и тот же сервер, Apache, анализируя заголовок запроса (а именно поле Host), понимает, какой именно из серверов нужен пользователю. Денвер позволяет добавить или удалить новый виртуальный хост за два шага. Чтобы добавить новый хост, нужно создать в каталоге \home подкаталог с именем создаваемого хоста (например, microsoft.com), затем внутри него сделать каталог www. В этот каталог нужно помещать файлы, которые должны быть доступны по запросу к хосту www.microsoft.com . Для создания поддомена нужно сделать каталог с именем этого поддомена.

На картинке показано, какие домены и поддомены есть на моей машине. Это www.asechka.ru, www.feathery.ru, xakep.feathery.ru, localhost, subdomain.localhost, www.microsoft.com, feathery.microsoft.com. Кроме этого, видны еще два тестовых хоста (www.test1.ru и www.test2.ru), создаваемых автоматически при установке Денвера. Если тебе нужно создать виртуальный хост с доменом более высокого уровня, можно воспользоваться вот такой конструкцией: \home\very.long.domain.name.ru\www2. Чтобы изменения, внесенные тобой в структуру каталогов, обрели силу, нужно перезапустить серверы. Надо сказать, из-за моей ламучести у меня не каждый раз получалось заставить заработать только что созданные домены с помощью ярлыка "Restart servers". Зато полная остановка и повторный запуск решили проблемы. Каждый раз при запуске Денвер анализирует положение вещей в каталоге \home и на основе этого изменяет файл %WINDIR%\system32\drivers\etc\hosts (для Windows 95/98 - %WINDIR%\hosts), который содержит данные об IP-адресах некоторых хостов. Данные из этого файла наиболее приоритетны для виндовой службы DNS, поэтому каждое его изменение отражается на том, как будут резольвиться имена хостов. Да, если тебе нужно, чтобы какие-то твои сайты были доступны по IP-адресу, поступай таким же образом: \home\192.168.111.111\www. Последний каталог (www) необходим.

Админим Сиквел
Сиквел - именно так правильно произносится аббревиатура SQL. С Денвером поставляется MySQL. Первое, что тебе придется сделать, - добавить нового пользователя базы. Это можно сделать здесь: http://localhost/addmuser.php. Благодаря этой замечательной штуке, можно на локальной машине полностью воссоздать те условия, в которых будет работать твой скрипт на реальном хосте. Ведь твой провайдер вряд ли будет долго задумываться над тем, какой именно логин и пароль тебе выдать, и ты получишь что-то вроде user231:5Mck58tv.

Один из самых мощных инструментов администрирования БД - phpMyAdmin. Он доступен для тебя по адресу http://localhost/phpMyAdmin. Описать все его возможности здесь нереально: он способен решить практически любую задачу, связанную с отладкой базы. С его помощью ты сможешь создавать и модифицировать базы и таблицы, видеть состояние, загруженность, внутренние процессы в БД, и, пожалуй самое ценное, бэкап и восстановление баз.

Уверен, ты сам разберешься с функциями и интерфейсом phpMyAdmin. Он русскоязычный, все подробно объясняется.

Расширяем возможности
Все, о чем я писал выше, реализуется базовым комплектом. И тех услуг, которые он предоставляет, скорее всего, будет достаточно для создания/установки/отладки скриптов средней сложности.

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

- Полная версия ActivePerl, включающая в себя стандартные библиотеки, систему инсталляции модулей ActiveState PPM, дополнительные модули плюс CGI::WebIn и CGI::WebOut.
- Полная версия Apache/1.3.27 с динамическими модулями.
- Опять-таки, полные версии интерпретаторов PHP3, PHP4 и даже PHP5.
- Parrot - виртуальная машина Perl6.
- Parser 3. Детище Артемия Лебедева - технология создания сайтов. Чуть сложнее обычного HTML, но намного проще любого языка веб-программирования.
- Пакеты документации к основным и дополнительным модулям. Ценны сами по себе как хорошо переведенные на русский язык мануалы.

Кроме этого, доступны две альтернативные версии базового комплекта. Одна из них уже содержит в себе Parser 3. Думаю, если ты не экономишь на нескольких мегабайтах дискового пространства, имеет смысл устанавливать именно этот вариант. Вторая версия - минималистическая - базовый комплект на дискете.

Фин
Я надеюсь, теперь ты понимаешь, что в создании удобной среды веб-разработчика нет ничего сложного. Дело за малым - начинай творить. Так хочется, чтобы результаты труда наших программистов светились в топах на download-сайтах и не звучали в рассылках баг-трака. Удачи.

Файловая структура Денвера
Виртуальный диск содержит файловую структуру (не систему, разумеется, а именно структуру - расположение и назначение папок и файлов в них), характерную для никсов. Это очень удобно, потому что позволит тебе быстро освоиться и запомнить, где нужно искать тот или иной файл на настоящем никсовом сервере.

Денвер и внешние запросы
Денвер предназначен исключительно для разработки и отладки веб-скриптов. Использовать его в качестве настоящего сервера, доступного извне, разработчики категорически не рекомендуют. Но если все же приспичило, и ты понимаешь весь риск, то для того чтобы разрешить Апачу отвечать на внешние (то есть не от localhost) запросы, нужно раскомментировать в /usr/local/apache/conf/httpd.conf строку BindAddress *. Остальные строки, начинающиеся с BindAddress, надо закомментировать.

WWW
Официальная страница Денвера: www.dklab.ru/chicken/web
Последние версии дистрибутивов: www.dklab.ru/chicken/web/dis
Лебедевский Парсер: www.parser.ru
Perl по-русски: www.perl6.ru
Страница самого популярного веб-сервера: www.apache.org
Гипертекстовый препроцессор PHP: www.php.net
База данных MySQL: www.mysql.com

INFO
Где лежат конфиги:
Денвер: /etc/CONFIGURATION.txt
Apache: httpd.conf: /usr/local/apache/conf/httpd.conf
PHP: php.ini: /usr/local/php/php.ini
PHP3: /usr/local/php3/php3.ini
MySQL: /usr/local/mysql/my.cnf

INFO
Если не работают домены второго уровня либо вообще не открывается ничего, кроме localhost, то проверь настройки прокси-сервера в браузере.

INFO
Денвер обладает полезным свойством. Он умеет комментировать ошибки, происходящие на сервере, и выдавать возможные причины их возникновения. Чаще всего истинные.