Denwer SE: Возрождение легендарного локального веб-сервера для Windows (x64, PHP 8.5, MariaDB)
Те, кто начинал свой путь в веб-разработке в 2000-х или начале 2010-х, наверняка помнят легендарную иконку со шляпой в системном трее, появление мистического диска Z: и запуск скриптов через run.exe. Оригинальный Денвер (Джентльменский Набор Веб-Разработчика) от Дмитрия Котерова был культовым феноменом. Он позволял развернуть локальный сервер за пару минут без ручной правки конфигов Apache и прописывания хостов.
Но время шло, оригинальный проект Denwer 3 замер в 2013 году, мир захватили OpenServer, Laragon, а затем и Docker-контейнеры. Казалось, что Денвер окончательно стал частью истории и ностальгическим мемом.
Однако недавно проект получил второе дыхание. Разработчик Александр Тишов (Amro) — создатель CMS Seditio и основатель веб-студии «Авего» — выпустил Denwer SE (Second Edition). Это не просто косметическое обновление старых скриптов, а полный реинжиниринг с сохранением классической философии: портативность, скорость работы и привычная структура каталогов.
Откуда растут корни: история возрождения
Изначально всё задумывалось как локальное решение для сообщества CMS Seditio: нужно было быстро, без лишней головной боли разворачивать среду для разработки, тестирования сайтов и расширений. Первые версии выходили в формате неофициальных сборок, которые пытались скрестить старую логику Денвера с новыми версиями PHP.
Однако быстро стало понятно, что костыли поверх архитектуры 20-летней давности не работают. В итоге проект пережил полное переосмысление. Сегодня Denwer SE — это полностью автономный стек и независимая панель управления, которая не использует старый код Котерова, а является самостоятельным продуктом для современной веб-разработки.
Что под капотом? Архитектура и системные требования
Оригинальный Денвер во многом опирался на Perl-скрипты для парсинга и генерации конфигов. В Denwer SE от этого полностью отказались. Теперь панелью управления выступает полноценное Windows-приложение DenwerSE.exe, написанное на Python (скомпилировано через PyInstaller с использованием Tcl/Tk для GUI).
Главные инженерные отличия:
- Полный x64: Все компоненты — Apache 2.4, СУБД и интерпретаторы PHP — собраны исключительно под 64-битные системы. Больше никаких ограничений по памяти для тяжелых локальных баз.
- Зоопарк версий PHP на лету: Из коробки поддерживается стек версий от legacy PHP 5.6 (важно для поддержки старых сайтов) до ультра-актуальной PHP 8.5. Переключение происходит в один клик через интерфейс.
- Современные СУБД: Из коробки доступны MySQL 5.7 и MariaDB 11.x с возможностью бесшовного расширения.
- Честный HTTPS «из коробки»: Проблема с самоподписанными сертификатами, на которые ругаются современные браузеры, решена встроенным генератором локального Root CA.
Совместимость с ОС (от Windows 7 до Windows 11)
Система заточена под работу на 64-битных дистрибутивах Windows, начиная с Windows 7 SP1. Но современные версии PHP и Apache требуют свежих системных библиотек, поэтому в сборке учтены важные нюансы:
- Для Windows 10 и 11: Всё заводится сразу, достаточно лишь иметь в системе актуальные распространяемые пакеты Visual C++ (VC++).
- Для Windows 7, 8 и 8.1: Потребуется установка специфических KB-обновлений (патчей) от Microsoft (например, KB2999226 для рантайма), без которых новые версии Apache и PHP будут выдавать ошибки при обращении к системным API.
При этом проект сохранил ключевое преимущество старого концепта: абсолютную портативность. Весь каталог со стеком (home, usr, сама панель) можно закинуть на флешку или переносить между ПК целиком — он продолжит работать, не засирая систему скрытой установкой Windows-служб.
Структура каталогов: знакомые лица + папка-выручалочка
Если открыть корень Denwer SE, структура покажется родной, но с важными архитектурными и эксплуатационными изменениями:
- home\ — здесь живут сайты. Каждая подпапка первого уровня автоматически распознается как виртуальный хост (например, home\mysite.local\). Если внутри папки домена есть подпапки www, public_html или html, корнем (DocumentRoot) станет именно она. Если нет — корень самого домена.
- usr\ — сердце конфигурации. В usr\local\ лежат бинарники Apache, PHP, движки баз данных и OpenSSL.
- denwer\ — служебный каталог панели управления. Runtime для Python и VC++ вынесены отдельно в эту папку. Это сделано специально для того, чтобы Apache и свежие версии PHP не подхватывали «чужие» системные библиотеки (вроде VCRUNTIME140.dll), из-за чего часто падали другие сборки.
- install\ — крайне полезная папка при развертывании стека на чистых или старых ОС. Сюда вложены дистрибутивы Microsoft Visual C++ разных версий, а также те самые KB-обновления для Windows 7, 8 и 8.1. Больше не нужно судорожно гуглить и качать устаревшие патчи со сторонних сайтов — всё необходимое для старта на любой Windows уже идёт в комплекте.
Панель управления: всё нужное перед глазами
Если оригинальный Денвер управлялся исключительно через ярлыки «Run», «Stop» и «Restart», то в Denwer SE реализован полноценный графический интерфейс. Панель управления (DenwerSE.exe) берет на себя всю рутину и позволяет настраивать стек без необходимости лезть в текстовые файлы конфигурации.
Интерфейс разделен на логические блоки, обеспечивающие полный контроль над окружением:
1. Главный экран и управление службами
При запуске открывается компактное окно, которое при желании можно свернуть в трей. Отсюда в один клик выполняется глобальное управление сервером:
- Кнопки глобального пуска/остановки: «Запустить всё» и «Остановить всё» последовательно поднимают или гасят весь стек (монтирование диска, обновление hosts, запуск баз и веб-сервера).
- Быстрое переключение компонентов: Прямо на главном экране расположены выпадающие списки для мгновенной смены активной версии PHP и используемой СУБД (например, переключение с MySQL 5.7 на MariaDB).
- Индивидуальное управление: Для Apache и выбранной СУБД предусмотрены отдельные блоки кнопок (Запустить / Перезапустить / Остановить) с наглядными индикаторами статуса (например, «Apache: запущен»).
- Интерактивный лог: В нижней части окна выводится подробный лог выполнения операций в реальном времени. Если какой-то порт окажется занят или служба не сможет стартовать, причина будет сразу видна в окне без необходимости искать файлы логов на диске.
2. Конфигурация стека и сетевые настройки
По нажатию на кнопку настроек (иконка шестеренки рядом со списками) открывается окно глобальной конфигурации. В нём можно переключать ключевые параметры сетевой подсистемы:
- Управление виртуальным диском: Здесь можно активировать или деактивировать виртуальный диск одной галочкой («Включить виртуальный диск»), а также выбрать для него свободную букву (по умолчанию Z:).
- Сетевые привязки (Listen): Интерфейс позволяет переопределить IP-адрес привязки для Apache и MySQL/MariaDB (например, задать 127.0.0.1), а также кастомизировать порты (HTTP/HTTPS и стандартный TCP-порт СУБД 3306).
3. Полноценный визуальный редактор PHP.ini
Больше не нужно открывать текстовый файл конфигурации PHP и искать нужные строки через Ctrl+F. Кнопка «php.ini» на главной панели открывает кастомизированный менеджер настроек интерпретатора, разбитый на вкладки:
- Ошибки и лимиты: Визуальные чекбоксов для активации display_errors и log_errors, выбор уровня логирования (error_reporting), а также текстовые поля для тонкой настройки лимитов памяти (memory_limit), времени выполнения скриптов (max_execution_time) и параметров загрузки файлов (upload_max_filesize).
- Локализация: Быстрая конфигурация временной зоны (date.timezone) и кодировки по умолчанию (default_charset).
- Менеджер расширений (Extensions): Нижняя часть интерфейса представляет собой интерактивную матрицу чекбоксов для управления модулями PHP. Включить или выключить расширения (такие как curl, mbstring, openssl, mysqli, pdo_mysql, fileinfo и др.) можно простым проставлением галочек. Панель сама внесет соответствующие директивы extension= в конфигурационный файл.
Как это устроено технически
1. Работа с виртуальным диском и без него
По умолчанию Denwer SE умеет монтировать виртуальный диск (например, Z:) через системную утилиту subst, сопоставляя его с корнем установки. Это позволяет использовать относительные пути в конфигурационных файлах Apache (\usr\local\apache).
Если виртуальный диск не нужен или буква Z: занята сетевым хранилищем, в файле usr\configuration.txt достаточно выставить параметр use_virtual_disk = 0 (или снять галочку в GUI). В этом режиме панель автоматически определит физический путь на жестком диске и передаст Apache и MySQL абсолютные пути.
2. Динамическая сборка конфигов
В сборке нет статичного файла конфигурации базы данных my.ini. Каждый раз при старте службы СУБД панель берет файл-шаблон db-denwer.conf из папки конкретной базы данных и собирает my.ini на лету. Она сама подставляет туда нужные порты ({{MYSQL_BIND_PORT}}), IP-адреса привязки ({{MYSQL_BIND_IP}}) и пути к basedir/datadir. Поэтому любые правки в настройки СУБД нужно вносить именно в шаблон db-denwer.conf.
Точно так же генерируется и vhosts.conf для Apache. Панель сканирует папку home\, формирует список доменов, прописывает их в системный файл hosts (ведя строгий учет в usr\AddedHosts.txt, чтобы не затереть лишнего) и перезапускает веб-сервер.
3. Решение проблемы с HTTPS
Раньше локальная разработка по HTTPS превращалась в проблему: браузеры блокировали сайты из-за самоподписанных сертификатов, требуя добавлять каждый домен в исключения.
В Denwer SE эта проблема решена элегантно:
- При первом запуске создается локальный корневой сертификат центра сертификации — denwer-ca.crt.
- Этот файл один раз импортируется в доверенные корневые центры сертификации Windows (через кнопку в панели «Корневой CA в Windows» от админа или вручную).
- Панель сама генерирует связки cert.pem и key.pem для каждого домена в папке home\, подписывая их этим локальным корнем. Браузер видит валидную цепочку и пускает на локальный сайт по HTTPS без единого варнинга.
Кастомизация: Смена и добавление версий PHP и СУБД
Архитектура Denwer SE сделана максимально открытой. Если не хватает дефолтных версий, добавить новые — дело пары минут.
Как добавить новую версию PHP:
Из коробки уже идет преднастроенный стек вплоть до PHP 8.5. Но если понадобится закинуть кастомную сборку:
- Скачать с официального сайта архив PHP для Windows (обязательно Thread Safe (TS) версии и под архитектуру x64).
- Распаковать в новую папку внутри usr\local\apache\php\php8.x.
- Скопировать дефолтный php.ini-development в php.ini.
- Создать конфигурационный файл php-denwer.conf по образу и подобию соседних папок, указав корректное имя модуля (например, php_module и php8apache2_4.dll).
- Перезапустить панель — новая версия появится в списке. При старте сервера панель сама скорректирует пути extension_dir в php.ini под текущий режим работы (subst или физический путь).
Как добавить новую версию СУБД (MySQL / MariaDB):
Движки баз данных в системе изолированы и аккуратно хранятся в директории usr\local\db\. Процесс расширения выглядит следующим образом:
- Скачать zip-архив нужной версии СУБД (обязательно x64) с официального сайта.
- Распаковать её в usr\local\db\ (например, создать папку usr\local\db\mysql-8.0 или usr\local\db\mariadb-11.5).
- Для初始化 (инициализации) скопировать готовый рабочий шаблон db-denwer.conf из любой уже имеющейся базы (например, из usr\local\db\mysql-5.7\db-denwer.conf) и закинуть в папку новой СУБД, слегка поправив параметры под свои нужды.
- И это всё. Никакие пустые каталоги типа data создавать вручную не нужно. При первом старте панели с новой базой умная обвязка автоматически создаст нужную директорию и проведет первичную инициализацию системных таблиц.
- Перезапустить панель управления. Она просканирует папку usr\local\db\, увидит новую СУБД, подтянет её исполняемый файл и выведет её в выпадающем списке интерфейса. Остается выбрать её и запустить.
Ниша проекта в эпоху Docker
Конечно, для продакшена или сложных микросервисных архитектур Docker незаменим. Но у Denwer SE совершенно иная сфера применения:
- Молниеносный старт: Нет необходимости ждать сборки контейнеров, настраивать проброс портов и выделять гигабайты под WSL2. Стек запускается буквально за пару секунд.
- Поддержка legacy-проектов: Если на поддержку приходит сайт 10-летней давности (или старый проект на той же Seditio), которому нужна PHP 5.6, поднять его здесь займет ровно три минуты. При этом на соседней вкладке может крутиться современный проект на PHP 8.5.
- Экономия ресурсов: Стек потребляет ничтожно мало оперативной памяти и процессора по сравнению с ресурсоемким Docker Desktop. Это оптимально для работы в дороге на слабом или офисном ноутбуке.
- Песочница для новичков: Отличный способ понять, как взаимодействуют между собой Apache, PHP и СУБД, без погружения в консольные дебри контейнеризации.
Вердикт
Проекту Denwer SE удалось главное — взять работающий, интуитивно понятный концепт «всё в одном каталоге» и переложить его на современные рельсы. Локальные WAMP-стеки до сих пор востребованы, если они избавлены от старых болячек, поддерживают актуальный софт (включая PHP 8.5), «всеядны» к версиям Windows и развиваются силами разработчиков для реального комьюнити.
Подробнее изучить проект, скачать дистрибутив или ознакомиться с документацией можно на официальной странице Denwer SE на сайте Seditio.