Настройка Apache на Windows: полное руководство для разработчиков | AdminWiki

Настройка Apache на Windows: полное руководство для разработчиков

10 августа 2026 11 мин. чтения

Подготовка к установке Apache на Windows

Перед тем как развернуть Apache на Windows, нужно выбрать правильный дистрибутив и подготовить систему. Официальный сайт apache.org не предоставляет готовых бинарников для Windows, только исходные коды. Разработчикам приходится использовать сторонние сборки, которые регулярно обновляются и проверены сообществом. Ошибка на этом этапе приводит к несовместимости с PHP или проблемам с производительностью. Следующие два шага исключат неопределенность и предотвратят типичную ошибку «Address already in use» при первом запуске.

Какую версию Apache выбрать для Windows

На рынке два основных поставщика бинарных сборок Apache для Windows: Apache Lounge и Apache Haus. Оба проекта поддерживают актуальные версии, но Apache Lounge стал стандартом де-факто для большинства разработчиков. Сборки выходят оперативно, содержат все необходимые модули и совместимы с последними версиями PHP.

При выборе версии обращайте внимание на маркировку:

  • VC17 - сборка скомпилирована с Visual Studio 2022. Если вы планируете интегрировать PHP, берите строго VC17-версию Apache, потому что современные PHP 8.x также используют этот компилятор. Несовпадение версий компилятора вызывает ошибку загрузки модуля PHP.
  • x64 vs x86 - 64-разрядная версия (x64) снимает ограничение на использование памяти и работает быстрее. 32-разрядную (x86) выбирайте, только если у вас специфическая устаревшая система. В 2026 году для Windows 10/11 это неактуально.

Скачайте последний стабильный архив с сайта Apache Lounge. Файл будет называться примерно так: httpd-2.4.62-win64-VS17.zip. Цифры версии могут отличаться, но принцип выбора остается тем же: VC17 и x64.

Проверка системы и освобождение порта 80

Apache по умолчанию слушает порт 80 для HTTP-запросов. Если этот порт занят другой программой, сервер не запустится и выдаст ошибку AH00072: make_sock: could not bind to address [::]:80. Чаще всего порт 80 занимают IIS, Skype или World Wide Web Publishing Service.

Проверьте, кто слушает порт 80, командой в командной строке от имени администратора:

netstat -ano | findstr :80

В выводе вы увидите PID процесса. Найдите его в диспетчере задач на вкладке «Подробности» или командой:

tasklist | findstr "PID"

Если порт занят IIS, остановите службу через services.msc или командой iisreset /stop. World Wide Web Publishing Service отключается в оснастке «Службы» - установите тип запуска «Отключена». Skype в настройках позволяет сменить порт для входящих соединений: Инструменты → Настройки → Дополнительно → Соединение - уберите галочку «Использовать порты 80 и 443». После этих действий порт 80 освободится для Apache.

Установка Apache: пошаговая инструкция

Установка Apache из zip-архива дает полный контроль над расположением файлов и конфигурацией. В отличие от инсталляторов, вы не получите лишних записей в реестре и сможете перенести сервер на другую машину простым копированием папки. Права администратора нужны для установки службы, но не для запуска из командной строки.

Распаковка и структура каталогов Apache

Распакуйте скачанный архив в C:\Apache24. Этот путь используется в конфигурации по умолчанию, и если вы выберете другой каталог, придется править все пути в httpd.conf. Структура папок после распаковки:

  • bin - исполняемые файлы, главный из которых httpd.exe. Здесь же лежит ApacheMonitor.exe для управления сервером из трея.
  • conf - конфигурационные файлы. Основной - httpd.conf. В подпапке extra хранятся дополнительные конфиги, например httpd-vhosts.conf для виртуальных хостов.
  • htdocs - корневая директория сайта по умолчанию. Содержит заглушку index.html, которую вы увидите при первом запуске.
  • logs - журналы ошибок (error.log) и доступа (access.log). Первое, что нужно проверять при любых проблемах.
  • modules - подключаемые модули Apache, включая mod_rewrite.so, mod_ssl.so и другие.

Первый запуск Apache и проверка работы

Откройте командную строку от имени администратора, перейдите в папку bin и выполните:

cd C:\Apache24\bin
httpd.exe

Если конфигурация корректна, окно консоли останется открытым - Apache работает в интерактивном режиме. Откройте браузер и перейдите по адресу http://localhost. Вы должны увидеть страницу «It works!» с информацией о версии Apache. Это подтверждает, что сервер запущен и отдает контент.

Если консоль сразу закрывается, значит в конфигурации ошибка. Откройте C:\Apache24\logs\error.log и прочитайте последние строки. Частая причина - неправильный путь к корневой папке или занятый порт. Запустите тест конфигурации командой:

httpd.exe -t

Она покажет синтаксические ошибки с указанием номера строки в httpd.conf.

Настройка Apache через файл httpd.conf

Файл C:\Apache24\conf\httpd.conf - главный инструмент управления сервером. Все изменения в нем требуют перезапуска Apache. Перед редактированием сделайте резервную копию файла - это сэкономит время, если что-то пойдет не так. Для продакшен-среды принципы конфигурации Apache универсальны, и вы можете применить их позже при настройке Apache на Linux.

Изменение порта и корневой директории сайта

По умолчанию Apache слушает порт 80 и отдает файлы из C:\Apache24\htdocs. Для локальной разработки удобнее хранить проекты в отдельной папке, например D:\projects, и использовать нестандартный порт, чтобы избежать конфликтов.

Найдите в httpd.conf директиву Listen и измените порт:

Listen 8080

Затем найдите DocumentRoot и укажите путь к вашей папке с проектами:

DocumentRoot "D:/projects"

Обратите внимание: Apache использует прямые слеши в путях, даже на Windows. Сразу после DocumentRoot найдите блок <Directory> и приведите его к такому виду:

<Directory "D:/projects">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Директива Require all granted критически важна. Без нее вы получите ошибку 403 Forbidden, потому что Apache 2.4 по умолчанию запрещает доступ к файловой системе. AllowOverride All разрешает использовать файлы .htaccess внутри проектов - это пригодится для настройки ЧПУ в CMS и фреймворках.

Включение необходимых модулей Apache

Apache поставляется с десятками модулей, но по умолчанию активна лишь часть. Для современной веб-разработки нужно включить несколько ключевых. Найдите в httpd.conf секцию с LoadModule и раскомментируйте (уберите # в начале строки) следующие модули:

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule headers_module modules/mod_headers.so
LoadModule expires_module modules/mod_expires.so

mod_rewrite нужен для перенаправления URL - без него не заработают ЧПУ в WordPress, Laravel и других системах. mod_headers управляет HTTP-заголовками, что важно для безопасности и кэширования. mod_expires настраивает сроки кэширования статических файлов, ускоряя загрузку страниц при повторных визитах.

Интеграция Apache с PHP на Windows

Apache сам по себе отдает только статические файлы - HTML, CSS, JS, изображения. Для выполнения PHP-скриптов нужен интерпретатор PHP, подключенный как модуль. Этот шаг вызывает больше всего вопросов у разработчиков, переходящих с готовых сборок вроде XAMPP на ручную настройку. Если вам нужна полная автономная среда, включающая базу данных, обратите внимание на пошаговую настройку веб-сервера на Ubuntu - там описан процесс установки Apache, PHP-FPM и MariaDB.

Установка PHP и подключение к Apache как модуль

Скачайте PHP с официального сайта windows.php.net. Выбирайте версию с маркировкой Thread Safe - она предназначена для работы как модуль Apache. Архив должен соответствовать сборке Apache: VC17 и x64. Распакуйте архив в C:\php.

Откройте C:\Apache24\conf\httpd.conf и добавьте в конец файла следующие строки:

LoadModule php_module "C:/php/php8apache2_4.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/php"

Разберем каждую строку:

  • LoadModule php_module - загружает PHP как модуль Apache. Имя файла php8apache2_4.dll зависит от версии PHP: для PHP 8.x это именно php8apache2_4.dll, для PHP 7.x было php7apache2_4.dll. Проверьте фактическое имя файла в папке C:\php.
  • AddType - указывает Apache обрабатывать файлы с расширением .php как PHP-скрипты. Без этой строки Apache отдаст исходный код PHP вместо выполнения.
  • PHPIniDir - задает путь к файлу конфигурации php.ini.

Настройка php.ini для разработки

В папке C:\php найдите файл php.ini-development и переименуйте его в php.ini. Откройте его в редакторе и внесите изменения, необходимые для комфортной разработки:

error_reporting = E_ALL
display_errors = On
display_startup_errors = On

Эти настройки включают отображение всех ошибок PHP прямо в браузере. В production-среде так делать нельзя, но для локальной разработки это экономит часы отладки. Найдите параметр extension_dir и убедитесь, что он указывает на папку с расширениями:

extension_dir = "C:/php/ext"

Раскомментируйте расширения, которые нужны для типичных проектов:

extension=mbstring
extension=openssl
extension=pdo_mysql

mbstring - работа с многобайтовыми кодировками (UTF-8), обязателен для любого русскоязычного проекта. openssl - шифрование и HTTPS-соединения. pdo_mysql - подключение к базам данных MySQL через PDO.

Сохраните php.ini и перезапустите Apache. Создайте файл D:\projects\info.php с содержимым:

<?php phpinfo(); ?>

Откройте в браузере http://localhost:8080/info.php. Фиолетовая таблица с информацией о PHP подтверждает, что интеграция работает. После проверки удалите этот файл - он раскрывает детали конфигурации сервера.

Создание и настройка виртуальных хостов

Виртуальные хосты позволяют обслуживать несколько сайтов на одном сервере Apache, различая их по доменному имени. Для разработчика это означает, что проект shop.local и blog.local могут работать одновременно на одном Apache, каждый в своей папке и со своими настройками. Принцип настройки виртуальных хостов одинаков на всех платформах - если вы работаете и с Linux, изучите руководство по настройке виртуальных хостов Apache в Ubuntu.

Настройка файла hosts для локальных доменов

Когда вы вводите в браузере project.local, операционная система должна понять, что этот домен указывает на локальный сервер 127.0.0.1, а не искать его в интернете. За это отвечает файл C:\Windows\System32\drivers\etc\hosts. Откройте его в блокноте от имени администратора и добавьте строки:

127.0.0.1 project1.local
127.0.0.1 project2.local

Некоторые антивирусы блокируют изменения файла hosts, считая это подозрительным поведением. Если после сохранения виртуальные хосты не работают, временно отключите защиту или добавьте исключение для файла hosts в настройках антивируса.

Пример конфигурации виртуального хоста

Сначала включите поддержку виртуальных хостов в httpd.conf. Найдите и раскомментируйте строку:

Include conf/extra/httpd-vhosts.conf

Теперь откройте C:\Apache24\conf\extra\httpd-vhosts.conf и добавьте блоки для ваших проектов. Вот готовый шаблон:

<VirtualHost *:8080>
    DocumentRoot "D:/projects/shop"
    ServerName shop.local
    ErrorLog "logs/shop.local-error.log"
    CustomLog "logs/shop.local-access.log" common
    <Directory "D:/projects/shop">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Что здесь происходит:

  • <VirtualHost *:8080> - хост слушает порт 8080 на всех IP-адресах. Порт должен совпадать с директивой Listen в httpd.conf.
  • DocumentRoot - путь к корневой папке конкретного проекта.
  • ServerName - домен, по которому Apache определяет, какой хост обслуживать. Должен совпадать с записью в файле hosts.
  • ErrorLog и CustomLog - отдельные файлы журналов для каждого проекта. Упрощают отладку: ошибка в shop.local не смешивается с ошибками blog.local.
  • Блок <Directory> внутри VirtualHost переопределяет глобальные настройки доступа для этой конкретной папки.

Создайте аналогичный блок для второго проекта, изменив пути и домен. Сохраните файл и перезапустите Apache. Проверьте оба домена в браузере - каждый должен открывать содержимое своей папки.

Запуск Apache как службы Windows

Запуск httpd.exe из командной строки держит консоль открытой и требует ручного старта после каждой перезагрузки. Установка Apache как службы Windows решает эту проблему: сервер запускается автоматически при старте системы и работает в фоне без видимых окон. Для production-окружений этот шаг обязателен, а детали продакшен-конфигурации, включая безопасность и оптимизацию, разобраны в руководстве по профессиональной конфигурации Apache2.

Установка и управление службой Apache

Запустите командную строку строго от имени администратора и выполните:

cd C:\Apache24\bin
httpd.exe -k install

Команда создает службу с именем Apache2.4. Управлять ею можно стандартными средствами Windows:

  • Запуск: net start Apache2.4
  • Остановка: net stop Apache2.4
  • Перезапуск: net stop Apache2.4 && net start Apache2.4

Откройте оснастку services.msc, найдите службу Apache2.4 и установите тип запуска «Автоматически». Теперь Apache будет стартовать вместе с Windows. Если вам нужен мониторинг и быстрый доступ к перезапуску, запустите ApacheMonitor.exe из папки bin - он поселится в системном трее и покажет статус сервера.

Решение типичных проблем со службой

Если после установки служба не запускается, первым делом проверьте логи: C:\Apache24\logs\error.log. Частая причина - синтаксическая ошибка в конфигурации, которую вы не заметили при работе в интерактивном режиме. Запустите тест конфигурации:

httpd.exe -t

Утилита укажет конкретную строку с ошибкой. Исправьте ее и попробуйте снова запустить службу. Другая возможная причина - недостаток прав. Убедитесь, что командную строку для установки службы вы открывали от имени администратора. Если служба больше не нужна, удалите ее командой:

httpd.exe -k uninstall

Перед удалением остановите службу, иначе могут остаться записи в реестре.

Типичные ошибки и их решение

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

Ошибка 403 Forbidden при доступе к сайту

Браузер показывает «Forbidden. You don't have permission to access this resource». Причина - Apache 2.4 по умолчанию запрещает доступ к файловой системе. В конфигурации Apache 2.2 использовалась директива Allow from all, но в версии 2.4 синтаксис изменился. Решение: найдите в httpd.conf или httpd-vhosts.conf блок <Directory>, соответствующий вашему DocumentRoot, и убедитесь, что он содержит:

Require all granted

Если блок Directory отсутствует, создайте его. После изменения перезапустите Apache.

PHP не выполняется, а скачивается

При открытии .php-файла браузер предлагает его сохранить вместо отображения результата выполнения. Это значит, что Apache не распознает PHP-скрипты. Проверьте две вещи. Первое - наличие строки в httpd.conf:

AddType application/x-httpd-php .php

Второе - загружен ли модуль PHP. Выполните команду:

httpd.exe -M | findstr php

Если модуль не отображается в списке, проверьте правильность пути в директиве LoadModule php_module и совместимость версий PHP и Apache (оба должны быть VC17 и x64).

Ошибка «Address already in use»

Apache не может занять порт, потому что он уже используется другой программой. Решение описано в разделе «Проверка системы и освобождение порта 80». Если порт 80 занят неустановленной программой, самый быстрый способ - просто сменить порт Apache на 8080 в директиве Listen.

Ошибка загрузки модуля PHP

В логах появляется запись: PHP Fatal error: Unable to start PHP module или Cannot load php8apache2_4.dll. Причина почти всегда одна - несовпадение разрядности или версии компилятора. Apache x64 требует PHP x64, Apache VC17 требует PHP VC17. Проверьте, что в httpd.conf путь к dll указан правильно и файл физически существует в папке C:\php. Если вы обновляли PHP, старая версия dll могла остаться в системной переменной PATH - это вызывает конфликт версий.

Поделиться:
Сохранить гайд? В закладки браузера