Параметрическая настройка Apache 2.4 под Windows

Параметризация через переменные среды

Со времени опубликования предыдущей статьи произошли некоторые изменения. Поэтому вкратце рассмотрим установку и настройку веб-сервера Apache под Windows ещё раз на примере Apache 2.4.34 от Apache Lounge.

Теперь в конфигурационных файлах Apache допускается параметризация с помощью переменных. Так, в самом начале конфигурационного файла "httpd.conf" путь к папке сервера помещается в переменную SRVROOT, которая используется во всех остальных инструкциях, где требуется указание пути.

В этом механизме существенным является то, что в конфигурационных файлах доступны переменные окружения среды, из которой запускается сервер. Это даёт возможность устанавливать значения переменных, например, в BAT- или CMD-файле. Нельзя только забывать две вещи:

  1. Доступ к значению переменной ПЕРЕМЕННАЯ в командных файлах операционной системы осуществляется с помощью записи %ПЕРЕМЕННАЯ%, а в конфигурационных файлах веб-сервера — с помощью записи ${ПЕРЕМЕННАЯ}.
  2. Элементы пути в командных файлах должны разделяться символом " \ " (обратный слеш), а в конфигурационных файлах — символом " / " (прямой слеш).

Установка

В соответствии с ранее изложенной аргументацией, бинарные файлы сервера будем держать в папке %ProgramFiles%, а конфигурационные и журнальные файлы, файлы сценариев и веб-страницы — в папке "D:\www". Итак, установка:

  1. Распаковываем папку "Apache24" из архива "httpd-2.4.34-(…).zip" в папку %ProgramFiles%. Из-за ограничений безопасности это действие нужно выполнять с правами администратора.
  2. Создаём новую папку "D:\www".
  3. Копируем из "%ProgramFiles%\Apache24" в "D:\www" следующие папки:
    • "cgi-bin" (файлы CGI-сценариев веб-сервера);
    • "conf" (конфигурационные файлы веб-сервера);
    • "htdocs" (файлы веб-страниц);
    • "logs" (журнальные файлы веб-сервера).
  4. Во избежание путаницы переименовываем исходные папки, находящиеся в "%ProgramFiles%\Apache24", следующим образом:
    • "cgi-bin" → "cgi-bin.0";
    • "conf" → "conf.0";
    • "htdocs" → "htdocs.0";
    • "logs" → "logs.0".

Установка выполнена, содержимое папки "%ProgramFiles%\Apache24" в дальнейшем будет оставаться неизменным. Все исправления выполняются над файлами, находящимися в "D:\www". Переходим к настройке.

Основная настройка

Будем использовать в конфигурационных файлах две переменных: SRVROOT — путь к бинарным файлам веб-сервера, и DOCROOT — путь к файлам веб-страницы. А для большей гибкости значения этих переменных будем задавать в командном файле "apache24.bat" со следующим содержимым:

@ECHO OFF
SET SRVPATH=%ProgramFiles%\Apache24
SET DOCPATH=D:\WWW
SET SRVROOT=%SRVPATH:\=/%
SET DOCROOT=%DOCPATH:\=/%
"%SRVPATH%\bin\httpd.exe" -w -f "%DOCPATH%\conf\httpd.conf"

Переменным SRVROOT и DOCROOT присваиваются значения путей SRVPATH и DOCPATH соответственно с заменой разделителя " \ " на " / ". О том, как работают эти инструкции, можно прочитать в справке по команде SET, если в командной строке набрать "SET /?".

Изменения, которые нужно выполнить в конфигурационном файле "D:\www\conf\httpd.conf", описаны в виде пар строк:

#Заменяемая строка
Заменяющая строка.

Вот минимальный список изменений:

#Define SRVROOT "c:/Apache24"
PidFile "${DOCROOT}/logs/httpd.pid"

#DocumentRoot "${SRVROOT}/htdocs"
DocumentRoot "${DOCROOT}/htdocs"
#<Directory "${SRVROOT}/htdocs">
<Directory "${DOCROOT}/htdocs">

#TypesConfig conf/mime.types
TypesConfig ${DOCROOT}/conf/mime.types

#ErrorLog "logs/error.log"
ErrorLog "${DOCROOT}/logs/error.log"

#CustomLog "logs/access.log" common
CustomLog "${DOCROOT}/logs/access.log" common

#ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
ScriptAlias /cgi-bin/ "${DOCROOT}/cgi-bin/"

#<Directory "${SRVROOT}/cgi-bin">
<Directory "${DOCROOT}/cgi-bin">

С выполненной настройкой сервер должен запуститься с помощью описанного выше командного файла "Apache24.bat".А по адресу "http://localhost/" в браузере должна открыться страница с сообщением "It works!".

Если это не так, то сведения о причине неполадки скорее всего можно обнаружить в конце журнального файла "D:\www\logs\error.log". Например, если в конфигурационном файле забыть указать параметр PidFile, то появится такое сообщение:

[core:error] [pid ####:tid ###] (OS 3)Системе не удается найти указанный путь. : AH00099: could not create C:/Program Files/Apache24/logs/httpd.pid
[core:error] [pid ####:tid ###] AH00100: httpd.exe: could not log pid to file C:/Program Files/Apache24/logs/httpd.pid

Дополнительная настройка

По умолчанию веб-сервер принимает подключения на TCP-порту 80 всех сетевых интерфейсов. Для того, чтобы он был доступен на TCP-порту 8080 только локальных интерфейсов, в конфигурационный файл нужно внести следующие изменения:

#Listen 80
Listen 127.0.0.1:8080 # Ожидание подключений по IPv4
Listen [::1]:8080 # Ожидание подключений по IPv6

Естественно, такой сервер не виден за пределами компьютера, на котором он запущен, и пригоден только для локальной разработки. Чтобы сервер появился для всей сети, надо либо прописать IP-адреса сетевых интерфейсов, либо убрать их совсем вместе с разделителем " : ", оставив только номер порта.

Чтобы избавиться от предупреждения в консольном окне запуска веб-сервера:

AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using (…). Set the 'ServerName' directive globally to suppress this message

нужно выполнить предложенную в сообщении рекомендацию — указать в конфигурационном файле доменное имя сервера:

ServerName localhost:8080

Для просмотра локальной документации по адресу "http://localhost:8080/manual" нужно подключить соответствующую конфигурацию:

#Include conf/extra/httpd-manual.conf
Include ${DOCROOT}/conf/extra/httpd-manual.conf

Чтобы PHP-страницы обрабатывались интерпретатором, который установлен в папку "C:\PHP7", нужно прописать в конфигурационном файле "httpd.conf" следующие настройки:

PHPIniDir "C:/PHP7"
 … 
LoadModule php7_module "C:/PHP7/php7apache2_4.dll"
 … 
AddType application/x-httpd-php .php

Добавляемые директивы LoadModule и AddType надо размещать рядом с уже существующими в конфигурационном файле одноимёнными директивами.

Для управления разделами сайтов, работающих на веб-сервере Apache, часто задают настройки для отдельных папок в файлах ".htaccess". Чтобы этот механизм заработал, нужно в сеции <Directory "${DOCROOT}/public_html"> внести следующие исправления:

# AllowOwerride None
AllowOwerride All

Книги Создание сайтов

Книги Интернет

Яндекс.Метрика