Apache 2.x на Unix системах
Раздел описывает установку PHP c веб-сервером Apache 2.x на Unix-системах.
ВниманиеРазработчики PHP не рекомендуют
использовать многопоточный MPM-модуль в производственной среде, в которой работает Apache 2.
Лучше предпочесть prefork-версию модуля MPM, которая в Apache 2.0 и 2.2 идёт по умолчанию. Подробнее о причинах
рассказывает ответ раздела FAQ
о работе Apache2 с многопоточным MPM-модулем
Наиболее авторитетный источник информации по Apache 2.x —
» документация к Apache.
Документация даёт подробную информацию о настройках при установке.
Последняя версия веб-сервера Apache HTTP Server доступна для загрузки
» на странице загрузки Apache,
а совместимая версия PHP — на странице Download на этом сайте.
Это краткое руководство описывает только базовую установку Apache 2.x и PHP.
Дополнительную информацию даёт
» документация к Apache.
В инструкции ниже опустили номера версий — замените 'NN' на
номер, который соответствует версии Apache.
Сайт веб-сервера предлагает для загрузки две версии Apache 2.x — 2.4 и 2.2.
Лучше предпочесть последнюю версию — 2.4, если нет причин для установки
версии 2.2.
Инструкции этого раздела будут работать как для версии 2.4, так и для версии 2.2.
Обратите внимание, что поддержку Apache httpd 2.2 официально прекратили,
поэтому разработку этой версии остановили и больше не выпускают исправлений.
-
Скачайте Apache HTTP Server по приведённой ссылке
и распакуйте его:
-
Аналогичным способом скачайте и распакуйте исходные коды PHP:
-
Скомпилируйте и установите Apache. Подробнее об установке
рассказывает документация к Apache.
-
Теперь Apache 2.x.NN доступен по адресу /usr/local/apache2,
установщик настроил веб-сервер на поддержку загружаемых модулей и работу через
стандартный мультипроцессный MPM-модуль, который отвечает на запросы по модели prefork:
обрабатывает запросы в отдельном потоке однопоточных процессов.
Правильно ли прошла установка, проверяют через стандартную
процедуру запуска Apache — командой наподобие вот такой:
Затем остановите сервер, чтобы сконфигурировать и установить PHP:
-
Теперь сконфигурируем и соберём PHP. На этом этапе PHP настраивают
через опции конфигурации, чтобы указать, например, какие модули требуется включить.
Запустите команду ./configure --help, чтобы получить список доступных параметров
конфигурации. В примере мы выполним простую настройку
с поддержкой веб-сервера Apache и БД MySQL.
При сборке Apache из исходного кода по приведённой на этой странице инструкции
путь к команде apxs будет соответствовать пути в следующем примере,
но если Apache установили другим способом, потребуется изменить пример и указать путь к apxs,
который соответствует установке. Обратите внимание, что отдельные дистрибутивы
переименовывают apxs в apxs2.
Если потребуется изменить параметры конфигурации после установки,
то потребуется повторно выполнить шаги configure, make
и make install.
Просто перезапустите Apache, чтобы изменения вступили в силу и новый модуль начал работать.
Перекомпиляция Apache для этого не требуется.
Обратите внимание: если не указали иное, команда make install
установит также пакетный менеджер » PEAR,
инструменты PHP наподобие phpize,
установит CLI-интерфейс для работы с PHP в командной оболочке и другие компоненты.
-
Настройте файл php.ini.
Установка параметров PHP доступна через редактирование файла .ini
.
Укажите параметр --with-config-file-path=/some/path
в шаге 5,
если предпочитаете хранить файл php.ini в другом месте.
Если вместо этого вы выберете файл php.ini-production,
прочитайте список изменений внутри, поскольку они влияют на поведение PHP.
-
Отредактируйте файл httpd.conf,
чтобы Apache загружал модуль PHP.
Путь к PHP-модулю указывают справа от инструкции LoadModule
.
Команда make install, возможно, уже добавила эту инструкцию автоматически,
ну лучше проверить.
-
Скажите веб-серверу Apache, чтобы он разбирал файлы с конкретными расширениями как PHP-код.
Например, пусть Apache разбирает как PHP-код файлы с расширением .php
.
Вместо установки только Apache-директивы
AddType
избегают исполнения опасных загрузок и файлов
наподобие exploit.php.jpg.
Аналогично следующему примеру указывают одно или больше произвольных расширений,
которые веб-сервер будет разбирать как файлы с PHP-кодом.
Для демонстрации добавим расширение .php
.
Или, когда требуется разрешить запуск PHP-кода из файлов
с расширениями .php
, .php2
,
.php3
, .php4
, .php5
,
.php6
и .phtml
, но не другими,
настройка выглядит вот так:
А чтобы фильтр исходного PHP-кода обрабатывал файлы с расширением .phps
и показывал как исходный код с подсветкой синтаксиса,
настройку записывают вот так:
Модуль mod_rewrite
умеет показывать произвольные файлы
с расширением .php
как исходный код с подсветкой синтаксиса
без переименования или копирования в файл с расширением .phps
:
Фильтр исходного PHP-кода отключают
в производственной среде, поскольку он раскрывает конфиденциальную
или другую чувствительную информацию, которую встроили в исходный код.
-
Сервер Apache запускают стандартной процедурой наподобие:
ИЛИ
Выполнение действий, которые описала эта страница, запускает веб-сервер Apache2
с поддержкой PHP в виде SAPI
-модуля.
Конечно, для PHP и Apache доступно гораздо больше параметров конфигурации.
Дополнительную информацию даёт команда ./configure --help
при запуске в соответствующем дереве исходного кода.
Сборка веб-сервера Apache будет работать в многопоточном режиме,
если при сборке Apache вместо стандартного мультипроцессного MPM-модуля prefork
выбрать мультипроцессный MPM-модуль, который отвечает на запросы
по модели worker: обрабатывает отдельный запрос в отдельном потоке
многопоточного процесса. Чтобы сделать это, к аргументу, который передали команде ./configure
на шаге 3, добавляют следующую опцию:
Веб-сервер собирают для работы по такой модели, только если осознают
последствия решения и отчётливо понимают смысл действий. Документация Apache
» к MPM-модулям
рассматривает работу модулей MPM подробнее.
Замечание:
В разделе FAQ в ответе на вопрос
о параметре MultiViews в настройках Apache
обсуждается согласование контента множественного представления при работе веб-сервера с PHP-файлами.
Замечание:
Только в системах с поддержкой потоков получится собрать многопоточную версию Apache.
Тогда требуется и PHP-сборка с поддержкой потокобезопасного ZTS-режима (англ. Zend Thread Safety).
В этой конфигурации не каждое расширение будет доступно.
Разработчики PHP рекомендуют настраивать сборку Apache
на работу с MPM-модулем prefork по умолчанию.