Denwer SE: Возрождение легендарного локального веб-сервера на современном стеке
Возрождение легендарного «Денвера»: портативный локальный сервер на Python и x64, HTTPS без ошибок, зоопарк версий PHP и никакого Perl.
Если вы начинали веб-разработку в середине 2000-х, то наверняка помните Denwer — «джентльменский набор веб-разработчика». Иконка в виде человека в шляпе, виртуальный диск Z:, папка home/localhost/www — всё это было ритуалом, который упрощал жизнь тысячам разработчиков. Но оригинальный Denwer безнадёжно устарел: Perl-скрипты, 32-битные сборки, поддержка только древних версий PHP и MySQL. Ему на смену пришли громоздкие комбайны вроде Open Server или сложные для новичков Docker-контейнеры.
Однако недавно проект получил второе дыхание. Разработчик Александр Тишов (Amro) — создатель CMS Seditio и основатель веб-студии «Авего» — выпустил Denwer SE (Second Edition). Это не просто обновление, а полный реинжиниринг с сохранением классической философии: портативность, скорость работы и привычная структура каталогов.
В этой статье разберём, что изменилось под капотом, почему панель управления переехала с Perl на Python, как работает автоматический HTTPS с собственным корневым сертификатом и зачем нужен зоопарк версий PHP от 5.6 до 8.5.
Краткий экскурс: от Denwer 3 до Denwer SE
Оригинальный Denwer (сокращение от Джентельменский Набор Веб-разработчика) появился в начале 2000-х. Он представлял собой связку Apache + PHP + MySQL, упакованную в самораспаковывающийся архив. Главные фишки:
- Виртуальный диск (по умолчанию Z:), который монтировался через subst.
- Автоматическое создание виртуальных хостов по именам папок в home.
- Консольные exe-файлы (Run, Stop, Restart) без графического окна.
Проблемы оригинала:
- Управление на Perl — медленно, тяжело поддерживать в Windows.
- Только 32-битные компоненты.
- Невозможно быстро переключать версии PHP или БД.
- Отсутствие нормального HTTPS (только самоподписанные сертификаты с ошибками в браузере).
- Поддержка прекратилась в 2016 году.
Denwer SE решает все эти проблемы, оставаясь при этом таким же портативным — достаточно скопировать папку на флешку или в облачный каталог.
Архитектура: Python вместо Perl
Denwer SE — панель управления написана на Python и скомпилирована в один EXE-файл (через PyInstaller).
Внутри служебной папки denwer\ лежат:
- DLL-версия Python — интерпретатор, который использует основной исполняемый файл.
- Скомпилированные модули .pyd — в том числе GUI на базе Tcl/Tk для оконного интерфейса и системного трея.
- Минимальный набор библиотек для управления службами, правки hosts и генерации сертификатов.
Это даёт несколько преимуществ:
- Портативность — панель ищет соседние папки home и usr, поэтому каталог со стеком можно переносить куда угодно без переустановки.
- Скорость — Python-скрипты запускаются быстрее, чем Perl, особенно на холодном старте.
- Читаемость кода — разработчику проще поддерживать и расширять функционал.
Полный переход на x64
Оригинальный Denwer навсегда остался 32-битным, что в современных реалиях просто неприемлемо. Denwer SE собирается исключительно под x64:
- Apache (версия 2.4.x) — 64-битный.
- Все модули PHP (от 5.6 до 8.5) — Thread Safe x64.
- MySQL / MariaDB — 64-битные сборки.
Системные требования — Windows 7/8/10/11 (x64). Для работы компонентов потребуются Microsoft Visual C++ Redistributable (VC11, VC12, VC14, VC15). Разработчик положил установщики этих пакетов в папку vcredist\ — при необходимости можно доустановить вручную.
Структура каталогов: преемственность и гибкость
Denwer SE сохранил классическую структуру, чтобы старые пользователи не ломали голову:
Главный конфиг — usr\configuration.txt. В нём задаются пути без жёсткой привязки к букве диска, например:
При старте панель монтирует виртуальный диск (по умолчанию Z:) и динамически подставляет путь через переменную subst_drive.
Управление версиями PHP и БД без танцев с бубном
В Denwer SE встроен менеджер версий. Вы просто выбираете из выпадающего списка нужную версию PHP (например, 8.3 или 5.6) — панель сама правит конфигурацию Apache.
Как это работает под капотом:
В папке usr/local/apache/php лежат подкаталоги php5.6, php7.4, php8.3 и т.д..
В каждом из них есть файл php-denwer.conf— шаблон для подключения модуля к Apache. При выборе версии этот файл копируется в conf/extra/httpd-denwer.conf, который затем включается в основной httpd.conf.
Если вы хотите добавить свою сборку PHP (например, PHP 8.4-rc), достаточно:
- Распаковать x64 Thread Safe версию в отдельный каталог внутри php\.
- Создать php-denwer.conf по образцу.
- Убедиться, что все DLL от VC++ установлены.
Аналогично для баз данных: переключение между MySQL 5.7 и MariaDB 11.8 происходит через тот же интерфейс. В каталоге СУБД может лежать файл db-denwer.conf, который при старте копируется в my.ini.
HTTPS, который не бесит: локальный Root CA
Самое болезненное место при локальной разработке это самоподписанные сертификаты. Браузеры постоянно ругаются, приходится кликать «Принять риск». Для командной разработки это вообще катастрофа: каждый участник должен сгенерировать свой сертификат и добавить в исключения.
Denwer SE решает проблему элегантно — он создаёт собственный корневой центр сертификации (CA) и подписывает им сертификаты для всех ваших локальных доменов.
Как это работает:
- При первом запуске (если найден OpenSSL) панель генерирует ключи denwer-ca.key и сертификат denwer-ca.crt в папку usr/local/apache/conf/cert/denwer-ca/.
- Для каждого виртуального хоста (папки в home/) автоматически создаётся сертификат в conf/cert/<domain>/.
- Все сертификаты хостов подписаны локальным CA.
Чтобы браузер доверял им, нужно один раз установить denwer-ca.crt в хранилище «Доверенные корневые центры сертификации» Windows. Для этого в панели есть специальная кнопка (требует прав администратора).
После этого любые HTTPS-запросы к локальным хостам работают без единого предупреждения.
Удобства для разработчика (DX)
В версии 1.2.4 добавили несколько фич, которые экономят время каждый день:
- Лог с таймштампами — каждая строка в окне панели имеет префикс [чч:мм:сс]. Теперь видно, сколько секунд сервер поднимается и где возможны задержки.
- Прямой доступ к php.ini и my.cnf — рядом со списками версий появились кнопки, открывающие конфигурацию именно активной версии.
- Автоматическое ведение hosts — панель в реальном времени сканирует home/, находит новые домены и прописывает их в C:\Windows\System32\drivers\etc\hosts. Журнал добавляемых записей сохраняется в usr\AddedHosts.txt. При остановке стека лишние строки удаляются.
- Для смены версии PHP или базы данных панель требует полной остановки всех служб. Вы нажимаете «Стоп», меняете версию в списке, затем «Старт» — и стек поднимается уже с новыми настройками. Автоматический перезапуск без вашего участия работает только для Apache: когда вы добавляете новый домен в папку home/, панель сама переписывает vhosts.conf и перезапускает веб-сервер, не трогая БД.
Почему не Open Server или Docker?
Этот вопрос закономерно возникает у всех, кто видит очередной локальный веб-сервер. Ведь есть уже давно Open Server Panel, Laragon, XAMPP, а для продвинутых — Docker. Зачем ещё один?
Open Server — мощный и удобный комбайн с десятками версий PHP и настройками «на века». Но он разворачивается в системе не портативно: создаёт папки в ProgramData, пишет в реестр, а запуск может занимать 5–10 секунд. Denwer SE, напротив, полностью переносим: скопировал папку на флешку или в облачный каталог — и всё работает. Запуск стека — буквально 1–2 секунды, что критично, когда вы десятки раз за день перезапускаете сервер для тестов.
Docker — индустриальный стандарт для изоляции и воспроизводимости окружений. Но для локальной разработки простого сайта он часто избыточен. Вам нужно разобраться в образах, контейнерах, пробросе портов, volume’ах и docker-compose.yml. А в Denwer SE вы просто создали папку в home/ — и готово. Никакой работы с командной строкой, никакого потребления гигабайт ОЗУ на фоновую службу Docker Desktop.
Laragon — быстрый, портативный, поддерживает не только PHP, но и Node.js, Python, Go. Но он ориентирован на современные фреймворки, особенно Laravel. Denwer SE же сделан для тех, кто вырос на классическом Денвере: виртуальный диск Z:, папка home/имя_домена/www, минимум настроек. Не нужно переучиваться — просто распаковал и работаешь как 10 лет назад, но с новыми версиями PHP и HTTPS.
Как начать пользоваться Denwer SE
- Скачать архив с официального сайта автора.
- Распаковать в любое место, например C:\web\DenwerSE\.
- Запустить DenwerSE.exe — если нет прав администратора, попросит их для монтирования диска и правки hosts.
- Нажать «Запустить» — появится виртуальный диск Z:, а в системном трее иконка.
- Создать папку сайта — например, home\myproject.local и положить туда index.php.
- Открыть в браузере http://myproject.local/ (или https://myproject.local/). HTTPS будет работать сразу после установки корневого сертификата (кнопка в панели).
По умолчанию пароль к MySQL/MariaDB — пустая строка (пользователь root). При желании его можно сменить через phpMyAdmin.
Заключение
Denwer SE — это не просто ностальгический проект. Это действительно современный инструмент, который доказывает, что концепция «локального сервера в одну папку» всё ещё актуальна. Отказ от Perl в пользу Python, менеджер версий PHP/БД, нормальный HTTPS, портативность и мгновенный запуск — всё это делает его отличным выбором для быстрого прототипирования, тестирования легаси-кода или обучения веб-разработке.
Если вы устали ждать, пока Open Server применит настройки, или не хотите разбираться в Docker Compose — попробуйте Denwer SE. Вероятно, он напомнит вам старые добрые времена, но уже без боли устаревших технологий.
- Автор проекта: Александр Тишов (Amro), разработчик CMS Seditio.
- Лицензия: Freeware.
- Совместимость: Windows 7/8/10/11 x64.
Исходники панели управления не открыты (распространяется скомпилированный EXE), но архитектура и конфиги полностью прозрачны. В планах — добавить поддержку Nginx в качестве альтернативы. Следите за обновлениями.