Установка Apache под Windows

Автор: | 11.05.2019

Начнем установку на примере Apache версии 2.2. В итоге мы установим несколько версий веб-сервера и при необходимости будем между ними переключаться.

Установка apache-2.2.22-win32 (VC9/VC10)

  1. Скачиваем zip-архив или ищем здесь
  2. Распакуем архив в свой рабочий каталог D:\dev\Apache2\2.2.22
  3. Отредактируем главный файл конфигурации. У меня он находится по адресу D:\dev\Apache2\2.2.22\conf\httpd.conf
    1. включаем mod_rewrite раскомментировав строку LoadModule rewrite_module modules/mod_rewrite.so
    2. подключить php интерпретатор, добавив в конец блока загрузки — LoadModule php5_module "D:/dev/php/5.3.0/php5apache2_2.dll" — укажите свой путь
    3. укажем каталог с конфигом для php (ниже) — PHPIniDir "D:/dev/php/5.3.0"
    4. Раскомментировать и изменить ServerName localhost:80
    5. По необходимости изменить, я сделал так DocumentRoot "d:/dev/Apache2/2.2.22/htdocs"
    6. Поменять конфиг:
      • #<Directory />
      • # Options FollowSymLinks
      • # AllowOverride None
      • # Order deny,allow
      • # Deny from all
      • #</Directory>
      • на это
      • <Directory />
      • Options Includes Indexes FollowSymLinks
      • AllowOverride All
      • Allow From All
      • </Directory>
    7. При необходимости убрать все в этом блоке <Directory "d:/dev/Apache2/2.2.22/htdocs">, но я оставил
    8. Сделаем возможным работу с php файлами
      • <IfModule dir_module>
      • DirectoryIndex index.html index.htm index.shtml index.php
      • </IfModule>
    9. Если нужно, то смените пути до логов, можно оставить как есть
      • ErrorLog "logs/error.log"
      • CustomLog "logs/access.log" common
    10. Для работы SSI в блоке <IfModule mime_module> раскомментировать строки:
      • AddType text/html .shtml
      • AddOutputFilter INCLUDES .shtml
    11. и ниже добавить
      • AddType application/x-httpd-php .php и AddType application/x-httpd-php-source .phps
    12. найти и раскоментировать
      • Include conf/extra/httpd-mpm.conf
      • Include conf/extra/httpd-autoindex.conf
      • Include conf/extra/httpd-vhosts.conf
      • Include conf/extra/httpd-manual.conf
      • Include conf/extra/httpd-default.conf
    13. ВАЖНО!!! Проверить пути в этих файлах, если Apache устанавливался не в дефолтный каталог.
  4. Сконфигурировать VirtualHost
    1. Открыть конфиг виртуальных хостов D:\dev\Apache2\2.2.22\conf\extra\httpd-vhosts.conf, ваш путь может отличаться
    2. Указать NameVirtualHost *:80 — это делает все хосты виртуальными, поэтому localhost становится виртуальным и некоторые дерективы из httpd.conf для него уже не имеют значения.
    3. для localhost пропишем:
      • <VirtualHost *:80>
      • ServerName Default
      • DocumentRoot "d:/dev/Apache2/2.2.22/htdocs"
      • </VirtualHost>
    4. Для виртуального хоста
      • <VirtualHost *:80>
      • DocumentRoot "d:/dev/www/test"
      • ServerName test
      • ErrorLog "d:/dev/www/info/logs/error.log"
      • CustomLog "d:/dev/www/info/logs/access.log" common
      • </VirtualHost>
    5. Устанавливаем Apache как сервис
      • D:\dev\Apache2\2.2.22\bin\httpd.exe -k install/uninstall
      • Установленный сервис можно посмотреть через Win+R, services.msc, там же нужно указать ручной запуск сервиса. Управление сервисом — D:\dev\Apache2\2.2.22\bin\httpd.exe -k start/stop/restart
    6. Прописать виртуальные хосты в файле hosts
    7. Apache при установке не прописывается в переменную path, в отличие от MySQL, а PHP прописывается в ручную. Следовательно сменить версию Apache можно просто запустив нужную службу (сервис).

Установка apache2.4.38-win64-VC11, для apache2.4.38-win64-VC14 и apache2.4.38-win64-VC15 просто повторить шаги. Здесь меняется только версия VC++ компонента, это влияет на версию php поддерживаемую апачем. Установка php под Windows рассмотрена здесь.

  1. Скачиваем zip-архив (при необходимости дополнительные модули можно загрузить здесь же) и VC++ скачиваем здесь
  2. Распакуем архив D:\dev\Apache2\2.4.38
  3. Отредактировать D:\dev\Apache2\2.4.38\conf\httpd.conf главный файл конфига Apache
    • Изменить значение ServerRoot "d:/dev/Apache2/2.4.38"
    • Изменить значение DocumentRoot и Directory (ниже) "d:/dev/www"
    • Раскомментировать и изменить ServerName localhost:80
    • По необходимости меняем ErrorLog и CustomLog, я оставил те же
    • Добавить LoadModule php5_module "d:/dev/php/5.6.40/php5apache2_4.dll"
    • Добавить AddHandler application/x-httpd-php .php
    • Добавить PHPIniDir "d:/dev/php/5.6.40" путь к php.ini
    • Изменить значение DirectoryIndex index.html index.php
    • Устанавливаем апач как сервис/службу httpd.exe -k install/uninstall
  4. Проверяем, заходим на localhost (должно быть It works! или то что мы туда положили)
  5. При использовании виртуальных хостов DocumentRoot из httpd.conf более не имеет смысла. Основным хостом сервера теперь будет первый из виртуальных хостов записанных в httpd-vhosts.conf
  6. Прописываем хосты в hosts
  7. Создаем каталоги для виртуальных хостов
  8. Раскомментироватьв httpd.conf строку:
    • Include conf/extra/httpd-vhosts.conf
  9. Редактируем файл конфига виртуальных хостов conf/extra/httpd-vhosts.conf, добавляем в него:
    • <VirtualHost *:80>
    • DocumentRoot "d:/dev/Apache2/2.4.38/htdocs"
    • ServerName localhost
      • <Directory "/">
        • Require all granted
      • </Directory>
    • </VirtualHost>
    • <VirtualHost *:80>
    • DocumentRoot "d:/dev/www/test"
    • ServerName test
    • ErrorLog "d:/dev/www/info/logs/error.log"
    • CustomLog "d:/dev/www/info/logs/access.log" common
    • </VirtualHost>
  10. Перезапускаем сервис Apache командой httpd.exe -k restart

Для переключения версий PHP на Apache2.2.22

  1. Сменить путь LoadModule php5_module "D:/dev/php/5.4.0/php5apache2_2.dll"
  2. Сменить путь PHPIniDir "D:/dev/php/5.4.0"
  3. Для php-cli сменить значение в переменной path D:\dev\php\5.4.0
  4. Рестартнуть Windows и Apache