Установка Apache под Windows
(о параметрической настройке Apache 2.4.34 можно прочитать в другой статье)
Проблема установки Apache под Windows
Основная проблема установки Web-сервера Apache под Windows заключается в том, что после первичной установки дистрибутива весь пакет (исполняемые программы, конфигурационные файлы, файлы журналов работы сервера и файловая область для размещения Web-страниц) размещается в одном месте. Это мешает нормальной эксплуатации продукта по следующим причинам:
- Разграничение прав доступа. Исполняемые файлы должны оставаться неизменными, конфигурационными файлами управляет администратор Web-сервера, а доступ к файловой области Web-страниц должны иметь разработчики и администраторы сайта. Права доступа к папке "Program Files" настроены в предположении, что в ней хранятся исполняемые модули программных пакетов, модификация которых не требуется.
- Захламление системных папок. Папка "Program Files" операционной системы Windows изначально предназначена для размещения только исполняемых файлов. Она может находиться на отдельном томе, размер которого выбирается системным администратором в предположении о его относительном постоянстве. Уж точно никто не ожидает, что в этой папке будут храниться пользовательские данные, галереи рисунков и файловый архив сайта.
Поэтому установка Apache под Windows должна проводиться в два этапа:
- Первичная установка программного пакета в выбранную папку.
- Оптимизация размещения файловых областей web-сервера и соответствующее изменение его конфигурации.
При модификации конфигурационных файлов Apache нужно постоянно помнить, что в качестве разделителя путей к файлам и папкам должен использоваться символ "прямой слеш", как в операционных системах Unix и Linux, а не "обратный слеш", как в Windows.
Первичная установка
Для установки потребуется как минимум операционная система Windows XP SP3 (для этой устаревшей версии понадобится Web-сервер, сборка которого выполнена компилятором VC9 или VC10). Современные сборки Apache операционную систему Windows 2000 не поддерживают.
Дистрибутивный пакет Apache для Windows можно загрузить с сайта одного из двух "официальных" поставщиков: Apache Lounge (только версия 2.4, с документацией) или Apache Haus (версии 2.4 и 2.2, без документации). Он представляет собой ZIP-архив, который, по замыслу поставщиков дистрибутива, нужно распаковать в корень диска C:.
Поскольку мы всё равно будем проводить оптимизацию размещения файловой структуры Web-сервера, первичную установку нужно выполнить в ту папку, которая предназначена для размещения исполняемых модулей web-сервера (exe-, lib-, so- файлов и прочих, которые не подвержены изменениям). Это может быть системная папка "Program Files" или другая по выбору системного администратора.
После первичной установки нужно вынести из "базовой" папки в другое место на диске папки с файлами, которые "идеологически" относятся не к web-серверу, а к web-сайту. Для определённости будем предполагать, после распаковки дистрибутива все его компоненты находятся в папке "C:\Program Files\Apache24", а web-сайт будет размещаться в папке "D:\www".
Оптимизация размещения файловых областей
Сразу после установки структура папок программного пакета Apache выглядит следующим образом:
- bin
- — исполняемые файлы Web-сервера.
- cgi-bin
- — CGI-сценарии Web-сайта.
- conf
- — конфигурационные файлы Web-сервера.
- error
- — страницы ошибок протокола HTTP.
- htdocs
- — файловая область Web-сайта (проще говоря, здесь размещается Web-сайт).
- icons
- — пиктограммы Web-сервера
- include
- — подключаемые файлы заголовков (h-файлы), небоходимы при сборке Web-сервера компилятором VC.
- lib
- — библиотечные файлы Web-сервера.
- logs
- — журналы работы Web-сервера.
- manuals
- — документация в формате HTML.
- modules
- — дополнительные программные модули Web-сервера (so-файлы).
Из перечисленных выше папок четырём (cgi-bin, conf, htdocs и logs) не место в базовой папке Web-сервера. Из нужно скопировать в рабочую папку Web-сайта: "D:\www". Исходные папки можно было бы удалить, однако они могут понадобится для восстановления начальной ситуации, если в ходе настройки Web-сервера что-то пойдёт не так. С другой стороны, если их оставить на прежнем месте, то из-за неполной настройки Web-сервера может случиться так, что использоваться будут именно эти папки, а не те, которые мы хотим. Поэтому после копирования их лучше просто переименовать в cgi-bin.0, conf.0, htdocs.0 и logs.0 соответственно.
Настройка на новую файловую структуру
Теперь можно отразить фактическую файловую структуру Web-сервера в параметрах конфигурационного файла "D:\www\conf\httpd.conf":
- ServerRoot "C:/Program Files/Apache24" # путь к базовой папке Web-сервера
- PidFile "D:/www/logs/httpd.pid" # идентификатор процесса Web-сервера
- DocumentRoot "D:/www/htdocs" # здесь размещается Web-сайт
- <Directory "D:/www/htdocs"> # свойства папки с Web-сайтом
…
</Directory> - ErrorLog "D:/www/logs/error.log" # журнал ошибок Web-сервера
- CustomLog "D:/www/logs/access.log" common # журнал работы Web-сервера
- ScriptAlias /cgi-bin/ "D:/www/cgi-bin/" # папка серверных CGI-сценариев
- <Directory "D:/www/cgi-bin"> # свойства папки серверных сценариев
…
</Directory> - TypesConfig D:/www/conf/mime.types # описания MIME-типов
- Include "D:/www/conf/extra/httpd-manual.conf" # настройка для сопроводительной документации
Обратите внимание, что в п. 2 нужно добавить в конфигурационный файл строку с параметром PidFile, т. к. в эталонном конфигурационном файле этот параметр отсутствует. Остальные параметры в конфигурационном файле уже присутстсвуют — нужно отыскать строки, содержащие их, и заменить исходные пути к папкам на новые.
Пунктом 10 предполагается, что для включения доступа к HTML-документации по ссылке "http://localhost:8080/manual" нужно раскомментировать соответствующую строку с параметром Include и указать новый путь к подключаемому конфигурационному файлу. Однако поскольку местоположение документации тоже изменилось, то потребуется дополнительно внести изменение в файл "D:\www\conf\extra\httpd-manual.conf" по аналогии с п. 3 и 8:
- AliasMatch ^/manual(?:/(?:da|de|en|es|fr|ja|ko|pt-br|ru|tr|zh-cn))?(/.*)?$ "C:/Program Files/Apache24/manual$1"
- <Directory "C:/Program Files/Apache24/manual">
…
</Directory>
Запуск сервера и проверка настройки
Поскольку мы изменили файловую структуру Web-сервера, запускать исполняемый модуль сервера нужно командой (её можно записать в bat- или cmd-файл): "C:\Program Files\Apache24\bin\httpd.exe" -w -f "D:\www\conf\httpd.conf" -d "C:\Program Files\Apache24\."
Запущенный в режиме пользовательского приложения Apache (т. е. запущенный с помощью только что приведенной командной строки) может быть остановлен комбинацией клавиш [Ctrl]+[C]. Если же при этом возникли какие-нибудь трудности, то можно использовать такую команду: taskkill /f /IM httpd.exe
Чтобы установить Apache в качестве службы, надо выполнить команду:"C:\Program Files\Apache24\bin\httpd.exe" -k install -f "D:\www\conf\httpd.conf" -d "C:\Program Files\Apache24\."
Запуск и останов службы Web-сервера Apache производится командами: "C:\Program Files\Apache24\bin\httpd.exe" -k start
и "C:\Program Files\Apache24\bin\httpd.exe" -k stop
соответственно.
Удалить Apache из списка служб Windows можно с помощью команды: "C:\Program Files\Apache24\bin\httpd.exe" -k uninstall
Проверка правильности установки и первоначальной настройки Web-сервера выполняется вводом в Web-браузере URL: "http://localhost:80/". Если всё было выполнено правильно, должна открыться страничка с текстом "It works!"
Если устанавливалась сопроводительная документация в HTML-формате, то она должна быть доступна по ссылке "http://localhost:80/manual/"
Apache ведёт протокол доступа к сайту в файле "D:\www\conf\access.log". Сведения о проблемах в работе сервера записываются в файл "D:\www\conf\error.log". Его анализ может быть особенно полезен при настройке выполнения CGI-сценариев.
Дополнительная настройка
В дополнение к перечисленным выше настройкам нужно проверить значение параметра Listen, которым задаются настройки сетевого интерфейса (ip-адрес и номер TCP-порта), на котором сервер будет принимать клиентские подключения. Если Apache используется индивидуальным Web-разработчиком, то можно рекомендовать такую конфигурацию:
Listen 127.0.0.1:8080 # параметры сетевого интерфейса
Номер TCP-порта не должен конфликтовать с другим программным обеспечением, установленным на компьютере. Так, стандартный порт HTTP 80 часто бывает занят клиентом Skype. Для совместного использования сервера в сети нужно указать правильный IP-адрес или сетевое имя компьютера, на котором устанавливается Web-сервер.
Web-сервер Apache чаще всего используется совместно с интерпретаторами таких языков серверных сценариев, как PHP и Perl. Для того, чтобы на Web-сайте могли использоваться сценарии PHP (предполагаем, что PHP установлен в папку C:\PHP5), нужно добавить в конфигурационный файл "D:\www\conf\httpd.conf" следующие строки:
- LoadModule php5_module "C:/PHP5/php5apache2_2.dll"
- AddType application/x-httpd-php .php
- PHPIniDir "C:/PHP5"
Нужно отметить, что в папке PHP5 должен существовать конфигурационный файл php.ini, созданный на основе файла php.ini-development (если сервер используется для разработки Web-сайтов) или php.ini-production (это настоящий Web-сервер). Чтобы модули PHP могли найти все необходимые им динамические библиотеки, путь к папке C:\PHP5 должен быть прописан в переменной PATH среды окружения Windows.
Серверные CGI-сценарии на языке Perl уже должны выполняться при соблюдении двух условий:
- Интерпретатор языка Perl установлен на этом компьютере.
- В первой строке файлов сценариев правильно указан путь к интерпретатору Perl, например: #!C:/PERL/bin/perl.exe -w
Для проверки можно ввести в браузере URL: http://localhost:8080/cgi-bin/printenv.pl, предварительно подправив первую строку сценария printenv.pl в соответствии с п. 2.
Остальные нюансы настройки Web-сервера Apache под Windows выходят за рамки этой статьи.