Денвер, локальный сервер - Джентльменский набор веб разработчика
Джентльменский набор Web-разработчика («Д.н.w.р», читается «Денвер») — набор дистрибутивов (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка, используемые Web-разработчиками для разработки сайтов на «домашней» (локальной) Windows-машине без необходимости выхода в Интернет. Главная особенность Денвера — удобство при удаленной работе сразу над несколькими независимыми проектами и возможность размещения на Flash-накопителе.
Про установку сервера и различных дополнений к нему написано несколько статей, одну из которых — свою — я не устаю приводить в ссылках: Apache + Perl + PHP4 + MySQL для Windows 95/98: руководство по установке. До недавнего времени установка всей «кухни» была делом довольно кропотливым. Теперь же инсталляцию и конфигурирование компонентов можно произвести автоматически, и поможет в этом Денвер.
Давайте посмотрим, что же включает в себя базовый (основной) пакет Денвера:
* Инсталлятор (поддерживается также инсталляция на flash-накопитель).
* Apache, SSL, SSI, mod_rewrite, mod_php.
* PHP5 с поддержкой GD, MySQL, sqLite.
* MySQL5 с поддержкой транзакций.
* Система управления виртуальными хостами, основанная на шаблонах. Чтобы создать новый хост, вам нужно лишь добавить директорию в каталог /home, править конфигурационные файлы не требуется. По умолчанию уже поддерживаются схемы именования директорий многих популярных хостеров; новые можно без труда добавить.
* Система управления запуском и завершением всех компонентов Денвера.
* phpMyAdmin — система управления MySQL через Web-интерфейс.
* Эмулятор sendmail и SMTP-сервера (отладочная «заглушка» на localhost:25, складывающая приходящие письма в /tmp в формате .eml); поддерживается работа совместно с PHP, Perl, Parser и т.д.
Гербалайф, гербалайф...
Если вы когда-нибудь качали дистрибутивы по модему, наверное, вы задавались вопросом: каков абсолютный минимум размера дистрибутивов, чтобы с ними уже можно было работать. Давайте посчитаем:
* Apache: 4.7 MB;
* PHP 5: 9.7 MB;
* MySQL 5: 23 MB;
* phpMyAdmin: 2 МБ.
* Итого: 40 MB
Видно, что как раз эти компоненты и содержатся в базовом пакете Денвера, но занимает он... около 5.5 мегабайт! Вероятно, вы не поверите, что исходные дистрибутивы могут вот так взять и «похудеть» более чем в 7 раз без потери функциональности. За счет чего же удалось достичь таких результатов?
* Дистрибутивы были тщательным образом «прочесаны». Все компоненты, которые используются сравнительно редко, вынесены в отдельные пакеты расширений. Таким образом, 90% разработчиков смогут сразу же начать работать, а оставшимся 10% достаточно лишь докачать и установить при помощи инсталляторов дополнительные пакеты.
* Обычно дистрибутивы снабжаются различными ненужными файлами, вроде истории изменений или инструкций по установке. Незачем говорить, что Денвер их не содержит.
* Для упаковки архива используется один из самых мощных архиваторов — 7-Zip.
Пакеты расширений
Если вы — профессиональный разработчик, вам, наверное, потребуются дополнительные пакеты:
* полная версия ActivePerl 5.8;
* PHP5 с полным набором модулей;
* язык программирования Python;
* СУБД PostgreSQL или InterBase/FireBird версий 1 и 2;
* старый-добрый PHP версии 3 или 4;
* или даже Parser студии Лебедева.
Все это вы можете скачать и установить, причем «грязную работу» возьмет на себя инсталлятор, входящий в пакет.
Архитектура
Отличительной особенностью Денвера является его полная автономность. Она заключается в следующем.
* Денвер устанавливается в один-единственный каталог и вне его ничего не изменяет. Он не пишет файлы в Windows-директорию и не «гадит» в Реестре. При желании вы можете даже поставить себе сразу два Денвера, и они не будут конфликтовать.
* Никакие «сервисы» NT/2000 не «прописываются». Если вы запустили Денвер, то он работает. Если завершили — то перестает работать, не оставляя после себя следов.
* Системе не нужен деинсталлятор — достаточно просто удалить каталог.
* Установив Денвер однажды, вы можете затем просто переписывать его на другие машины (на произвольный диск в произвольную директорию). Это не приведет ни к каким побочным эффектам.
* Все конфигурирование и настройка под конкретную машину происходит автоматически.
Эти же правила распространяются и на пакеты расширений.
В целях упрощения работы компонентов комплекса и улучшения совместимости с реальным Unix-хостером при старте создается специальный виртуальный диск, присоединенный к основной директории.
Виртуальный диск — это просто синоним для некоторой папки на реальном, или физическом, диске. Подключается он при помощи команды subst, о чем заботятся скрипты Денвера. Вы можете работать с виртуальным диском, как с обычным. При этом все операции в действительности будут производиться с указанной директорией. Механизм работы виртуальных дисков встроен в ОС и не ведет к каким-либо издержкам и замедлениям.
За счет применения виртуального диска Денвер «изнутри» похож на маленький Unix: у него есть своя директория /home, /usr, /tmp... Различные компоненты и серверы расположены так, как это принято в Unix. Например, в /home располагаются виртуальные хосты, а в /usr — программные компоненты.
Такая архитектура в действительности не имеет ничего общего с системой Cygwin (хотя и похожа). Тем не менее, некоторые пакеты расширений Денвера могут использовать Cygwin для своих внутренних целей, но это всегда «прозрачно» для пользователя.
Вопреки распространенному мнению, Денвер не является чем-то статическим и неизменным. Никто не мешает вам устанавливать поверх него дополнительные программы и компоненты (например, сервер СУБД PostgreSQL). Они просто будут для него «как родные». Вы можете также задавать логику запуска и завершения дополнительных сервисов по аналогии с тем, как это сделано в базовом пакете. Так что, если вам нужна какая-то система, которой нет в пакетах расширений, смело ставьте и конфигурируйте ее вручную.
Итак, если вы решили установить Денвер, ознакомьтесь со статьей Устанавливаем Денвер. Там же вы найдете и ссылки на необходимые дистрибутивы. Удачной работы!..
Зачем вообще нужен локальный сервер?
В последнее десятилетие во всем мире наблюдается настоящий бум среди Web-разработчиков (по преимуществу это программисты). Они устанавливают у себя на Windows-машине сервер Apache с различными дополнениями к нему: PHP, Perl, MySQL и т.д. — преимущественно в целях более удобной отладки сайтов.
Многие (преимущественно дизайнеры) могут спросить: зачем вообще нужен локальный Web-сервер, когда страницы можно открывать и так — прямо с диска? Если это обычные (статические) HTML-страницы, то да, сервер не нужен. Однако даже для такой мелочи, как SSI (Server-side Includes — директивы в страницах, позволяющие вставлять на нужное место содержимое других файлов), уже необходим сервер. Не говоря уж о скриптах — они без сервера просто не запустятся.
Обычно все эти проблемы решают при помощи FTP-клиентов: закачивают исправленные страницы и скрипты на «настоящий» сервер в Интернете, смотрят, что получилось, затем лезут в редактор, исправляют, снова закачивают и т.д. до бесконечности. Главный недостаток такого подхода очевиден: необходимо все время быть подключенным к Интернету. Также очень желательно иметь хорошую связь, потому что в противном случае работа будет продвигаться крайне медленно.
Мне относительно регулярно приходят письма со следующим — обычно завуалированным — вопросом: чем отличается «просмотр страниц, открывая файл в браузере» от «просмотра с использованием сервера». В первом случае вы выбираете в меню что-то вроде Файл — Открыть — Обзор и выбираете нужный файл на диске. Браузер показывает его без всякой обработки, и путь в его адресной строке выглядит примерно вот так:
Если же вы открываете страницу «через сервер», происходит совершенно иное. Вообще, вы должны привыкнуть к мысли, что ваш «локальный» сервер ничем не хуже любого другого, расположенного в Интернете. А значит, он тоже содержит сайты (один или несколько), у каждого из которых есть определенное имя. Доступ к этим сайтам осуществляется, как обычно: вы указываете в адресной строке URL — обычно имя сайта и путь к документу на нем:
Уже при сравнении этих двух картинок можно видеть, что при открытии страницы «через браузер» пользователь в общем случае видит совсем не то же самое, что при открытии файла (сравните хотя бы заголовки окон). Кстати, на последней картинке имя сайта — dklab. Конечно, такое имя выглядит несколько странно — у него нет суффикса .ru, что делает его недоступным для всех остальных пользователей Сети. Однако на локальной машине сайт открывается замечательно, к тому же, я никогда не спутаю dklab.ru (сайт в Интернете) с dklab (сайт на локальной машине).