Update to En apache2.xml + infostyle

This commit is contained in:
Mikhail Alferov
2024-09-09 01:27:32 +03:00
committed by GitHub
parent 1b9faafd1c
commit a17d42ae8c

View File

@ -1,355 +1,352 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: a89c6d71c7b65e3de84f26230fbf72c9b8948adf Maintainer: shein Status: ready -->
<!-- EN-Revision: b0dd627899cf5c57d3d64fac07e9b6579dfca082 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="install.unix.apache2" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Apache 2.x на Unix системах</title>
<para>
Этот раздел описывает установку PHP c Apache 2.x на Unix системах.
Раздел описывает установку PHP c веб-сервером Apache 2.x на Unix-системах.
</para>
&warn.apache2.compat;
<para>
Самым авторитетным источником информации по Apache 2.x является
<link xlink:href="&url.apache2.docs;">документация Apache</link>.
Более подробная информация о настройках при установке может быть найдена
там.
Наиболее авторитетный источник информации по Apache 2.x
<link xlink:href="&url.apache2.docs;">документация к Apache</link>.
Документация даёт подробную информацию о настройках при установке.
</para>
<para>
Самая последняя версия Apache Http Server может быть получена
на <link xlink:href= "&url.apache;">странице загрузки Apache</link>,
а адрес соответствующей версии PHP был указан выше.
Это краткое руководство описывает лишь базовую установку Apache 2.x и PHP.
Для получения более детальной информации прочитайте
<link xlink:href="&url.apache2.docs;">документацию Apache</link>.
В инструкции ниже опущены номера версий - замените 'NN' на
номер, соответствующий скачанной вами версии Apache.
Последняя версия веб-сервера Apache HTTP Server доступна для загрузки
<link xlink:href= "&url.apache;">на странице загрузки Apache</link>,
а совместимая версия PHP — на странице Download на этом сайте.
Это краткое руководство описывает только базовую установку Apache 2.x и PHP.
Дополнительную информацию даёт
<link xlink:href="&url.apache2.docs;">документация к Apache</link>.
В инструкции ниже опустили номера версий замените 'NN' на
номер, который соответствует версии Apache.
</para>
<para>
На данный момент есть две версии Apache 2.x - 2.4 и 2.2.
Хотя для выбора каждой из них существуют отдельные доводы, 2.4 является
наиболее свежей и рекомендуемой версией, если вас устраивает такой выбор.
Тем не менее, данные инструкции будут работать как для 2.4, так и для 2.2.
Обратите внимание, что Apache httpd 2.2 официально больше не поддерживается,
поэтому дальнейшая разработка не будет продолжаться, также как и приниматься новые патчи.
Сайт веб-сервера предлагает для загрузки две версии Apache 2.x 2.4 и 2.2.
Лучше предпочесть последнюю версию — 2.4, если нет причин для установки
версии 2.2.
Инструкции этого раздела будут работать как для версии 2.4, так и для версии 2.2.
Обратите внимание, что поддержку Apache httpd 2.2 официально прекратили,
поэтому разработку этой версии остановили, а исправления больше не выпускают.
</para>
<orderedlist>
<listitem>
<para>Скачайте Apache HTTP server как было указано выше и распакуйте его:</para>
<para>Скачайте Apache HTTP Server по приведённой ссылке и распакуйте его:</para>
<informalexample>
<screen>
<![CDATA[
tar -xzf httpd-2.x.NN.tar.gz
]]>
</screen>
</informalexample>
</listitem>
</screen>
</informalexample>
</listitem>
<listitem>
<para>Аналогично, скачайте и распакуйте исходные коды PHP:</para>
<listitem>
<para>Аналогично, скачайте и распакуйте исходные коды PHP:</para>
<informalexample>
<screen>
<informalexample>
<screen>
<![CDATA[
tar -xzf php-NN.tar.gz
]]>
</screen>
</informalexample>
</listitem>
</screen>
</informalexample>
</listitem>
<listitem>
<para>
Скомпилируйте и установите Apache. Более подробную информацию по сборке
Apache смотрите в его документации.
</para>
<listitem>
<para>
Скомпилируйте и установите Apache. Подробнее об установке
рассказывает документация к Apache.
</para>
<informalexample>
<screen>
<informalexample>
<screen>
<![CDATA[
cd httpd-2_x_NN
./configure --enable-so
make
make install
]]>
</screen>
</informalexample>
</listitem>
</screen>
</informalexample>
</listitem>
<listitem>
<para>
Теперь ваш Apache 2.x.NN доступен как /usr/local/apache2,
сконфигурирован с поддержкой подгружаемых модулей и стандартным
мульти-процессным модулем (MPM) prefork.
Чтобы протестировать правильность установки используйте стандартную
процедуру запуска Apache, такую как:
<listitem>
<para>
Теперь Apache 2.x.NN доступен по адресу /usr/local/apache2,
установщик настроил веб-сервер на поддержку загружаемых модулей и работу через
стандартный мультипроцессный MPM-модуль, который отвечает на запросы по модели prefork:
обрабатывает запросы в отдельном потоке однопоточных процессов.
Правильно ли прошла установка, проверяют через стандартную
процедуру запуска Apache — командой наподобие вот такой:
<informalexample>
<screen>
<informalexample>
<screen>
<![CDATA[
/usr/local/apache2/bin/apachectl start
]]>
</screen>
</informalexample>
</informalexample>
Затем остановите сервер, чтобы сконфигурировать и установить PHP:
Затем остановите сервер, чтобы сконфигурировать и установить PHP:
<informalexample>
<screen>
<informalexample>
<screen>
<![CDATA[
/usr/local/apache2/bin/apachectl stop
]]>
</screen>
</informalexample>
</para>
</listitem>
</informalexample>
</para>
</listitem>
<listitem>
<listitem>
<para>
Теперь сконфигурируем и соберём PHP. На этом этапе PHP настраивают
через опции конфигурации, чтобы указать, например, какие модули требуется включить.
Запустите команду ./configure --help, чтобы получить список доступных параметров
конфигурации. В примере мы выполним простую настройку
с поддержкой веб-сервера Apache и БД MySQL.
</para>
<para>
Теперь мы сконфигурируем и соберём PHP. Здесь вы можете настроить установку
PHP с помощью различных опций, указывающих, например, какие модули нужно включить.
Просмотрите вывод команды ./configure --help для получения полного списка параметров
конфигурации. В нашем примере мы сконфигурируем PHP очень просто -
с поддержкой Apache и MySQL.
</para>
<para>
При сборке Apache из исходного кода по приведённой на этой странице инструкции
путь к команде apxs будет соответствовать пути в следующем примере, но если Apache
установили другим способом, потребуется изменить пример и указать к apxs путь,
который соответствует установке. Обратите внимание, что отдельные дистрибутивы
переименовывают apxs в apxs2.
</para>
<para>
Если вы собирали Apache из исходников, как было описано выше, то используйте
путь до apxs как указано в следующем примере, иначе, корректируйте этот путь
соответствующим вашей установке образом. Учтите также, что в некоторых
дистрибутивах apxs может иметь имя apxs2.
</para>
<informalexample>
<screen>
<informalexample>
<screen>
<![CDATA[
cd ../php-NN
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql
make
make install
]]>
</screen>
</informalexample>
<para>
Если вы решите изменить параметры конфигурации после установки, вам надо
будет повторить только три последних шага (configure, make, make install).
Вам нужно будет только перезапустить Apache, чтобы новые модули подгрузились и начали работать.
Перекомпиляция Apache для этого не требуется.
</para>
<para>
Заметьте, что если не указано обратное, то 'make install' установит так же PEAR,
различные инструменты PHP - такие как phpize, версию PHP для командной
строки (PHP CLI) и т.д.
</para>
</listitem>
<listitem>
<para>
Настройка вашего php.ini
</para>
<informalexample>
<screen>
<![CDATA[
cp php.ini-development /usr/local/lib/php.ini
]]>
</screen>
</screen>
</informalexample>
<para>
Вероятно, вы захотите изменить некоторые настройки в php.ini.
Если вы предпочитаете держать файл php.ini в другом месте, используйте
параметр --with-config-file-path=/some/path в шаге 5.
Если потребуется изменить параметры конфигурации после установки,
то потребуется повторно выполнить шаги configure, make и make install.
Просто перезапустите Apache, чтобы изменения вступили в силу и новый модуль начал работать.
Перекомпиляция Apache для этого не требуется.
</para>
<para>
Если же вы используете php.ini-production, прочитайте его, чтобы знать какие изменения в
поведении PHP это повлечёт.
Обратите внимание: если не указали иное, команда make install установит также пакетный менеджер PEAR,
инструменты PHP наподобие phpize, установит CLI-интерфейс для работы с PHP в командной оболочке и другие компоненты.
</para>
</listitem>
<listitem>
<para>
Настройте файл php.ini.
</para>
</listitem>
<informalexample>
<screen>
<![CDATA[
cp php.ini-development /usr/local/lib/php.ini
]]>
</screen>
</informalexample>
<listitem>
<para>
Отредактируйте ваш httpd.conf, чтобы Apache загружал модуль PHP. Путь в
правой части инструкции LoadModule должен указывать на модуль PHP. Команда make
install может добавить эту инструкцию автоматически, но этого может и не
произойти, поэтому проверьте, чтобы убедиться.
</para>
<para>
Установка параметров PHP доступна через редактирование файла php.ini.
Укажите параметр --with-config-file-path=/some/path в шаге 5,
если предпочитаете хранить файл php.ini в другом месте.
</para>
<informalexample>
<para>
Для PHP 8:
</para>
<programlisting role="apache-conf">
<para>
Если вместо этого вы выберете файл php.ini-production, прочитайте список изменений внутри,
поскольку они влияют на поведение PHP.
</para>
</listitem>
<listitem>
<para>
Отредактируйте файл httpd.conf, чтобы Apache загружал модуль PHP.
Путь к PHP-модулю указывают справа от инструкции LoadModule. Команда make
install, возможно, уже добавила эту инструкцию автоматически,
ну лучше проверить.
</para>
<informalexample>
<para>Для PHP 8:</para>
<programlisting role="apache-conf">
<![CDATA[
LoadModule php_module modules/libphp.so
]]>
</programlisting>
</informalexample>
</programlisting>
</informalexample>
<informalexample>
<para>
Для PHP 7:
</para>
<programlisting role="apache-conf">
<informalexample>
<para>Для PHP 7:</para>
<programlisting role="apache-conf">
<![CDATA[
LoadModule php7_module modules/libphp7.so
]]>
</programlisting>
</informalexample>
</programlisting>
</informalexample>
</listitem>
</listitem>
<listitem>
<para>
Скажите веб-серверу Apache, чтобы он разбирал файлы с конкретными расширениями как PHP-код. Например,
пусть Apache разбирает как PHP-код файлы с расширением .php. Вместо установки только Apache-директивы
AddType избегают исполнения опасных загрузок и файлов наподобие exploit.php.jpg.
Аналогично следующему примеру указывают одно или больше произвольных расширений,
которые веб-сервер будет разбирать как файлы с PHP-кодом. Для демонстрации добавим расширение .php.
</para>
<listitem>
<para>
Теперь следует сконфигурировать Apache, чтобы он передавал файлы с
некоторыми расширениями на обработку модулю PHP. В нашем примере сделаем
это для .php файлов. Вместо обычного использования директивы
Apache AddType, мы хотим избежать интерпретации как PHP потенциально опасных загрузок и
файлов наподобие exploit.php.jpg. С помощью данного примера можно
указать для интерпретации PHP любые расширения, просто добавив их
в конец списка. Продемонстрируем это на расширении .php.
</para>
<informalexample>
<programlisting role="apache-conf">
<informalexample>
<programlisting role="apache-conf">
<![CDATA[
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
]]>
</programlisting>
</informalexample>
</programlisting>
</informalexample>
<para>
Или, если мы хотим добавить расширения .php, .php2, .php3, .php4, .php5, .php6 и
.phtml, это можно записать так:
</para>
<para>
Или, когда требуется разрешить запуск PHP-кода из файлов
с расширениями .php, .php2, .php3, .php4, .php5, .php6 и .phtml, но не другими,
настройка выглядит вот так:
</para>
<informalexample>
<programlisting role="apache-conf">
<informalexample>
<programlisting role="apache-conf">
<![CDATA[
<FilesMatch "\.ph(p[2-6]?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
]]>
</programlisting>
</informalexample>
</programlisting>
</informalexample>
<para>
Чтобы PHP отображал содержимое файлов .phps с подсветкой синтаксиса, нужно
внести соответствующую директиву
</para>
<para>
А чтобы фильтр исходного PHP-кода обрабатывал файлы с расширением .phps
и показывал как исходный код с подсветкой синтаксиса,
настройку записывают вот так:
</para>
<informalexample>
<programlisting role="apache-conf">
<informalexample>
<programlisting role="apache-conf">
<![CDATA[
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
]]>
</programlisting>
</informalexample>
</programlisting>
</informalexample>
<para>
Можно использовать mod_rewrite для отображения любого .php файла
с подсветкой синтаксиса, без нужды его переименования в .phps:
</para>
<para>
Модуль mod_rewrite умеет показывать произвольные файлы с расширением .php
как исходный код с подсветкой синтаксиса
без переименования или копирования в файл с расширением .phps:
</para>
<informalexample>
<programlisting role="apache-conf">
<informalexample>
<programlisting role="apache-conf">
<![CDATA[
RewriteEngine On
RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
]]>
</programlisting>
</informalexample>
</programlisting>
</informalexample>
<para>
Данный фильтр, отображающий исходный код, должен быть отключён в
промышленном использовании, так как он может открыть конфиденциальную
или другую важную информацию, включённую в исходный код.
</para>
<para>
Фильтр исходного PHP-кода отключают
в производственной среде, поскольку он раскрывает конфиденциальную
или другую чувствительную информацию, которую встроили в исходный код.
</para>
</listitem>
</listitem>
<listitem>
<para>
Сервер Apache запускают стандартной процедурой наподобие:
</para>
<listitem>
<para>
Используйте стандартную процедуру запуска Apache, например:
</para>
<informalexample>
<screen>
<informalexample>
<screen>
<![CDATA[
/usr/local/apache2/bin/apachectl start
]]>
</screen>
</informalexample>
</informalexample>
<para>ИЛИ</para>
<para>ИЛИ</para>
<informalexample>
<screen>
<informalexample>
<screen>
<![CDATA[
service httpd restart
]]>
</screen>
</informalexample>
</informalexample>
</listitem>
</orderedlist>
</listitem>
</orderedlist>
<para>
Выполнение действий, которые описала эта страница, запускает веб-сервер Apache2
с поддержкой PHP в виде <literal>SAPI</literal>-модуля.
Конечно, для PHP и Apache доступно гораздо больше параметров конфигурации.
Дополнительную информацию даёт команда <command>./configure --help</command>
при запуске в соответствующем дереве исходного кода.
</para>
<para>
Если вы следовали инструкциям выше, то на данном этапе должны иметь запущенный
веб-сервер Apache2 с поддержкой PHP, как модуля <literal>SAPI</literal>.
Конечно, для PHP и Apache доступно гораздо больше параметров конфигурации.
Используйте <command>./configure --help</command> в соответствующей папке с
исходными кодами для получения полного списка параметров конфигурации.
</para>
<para>
Если вы хотите собрать многопоточную версию Apache,
то при сборке вам следует указать модуль MPM <filename>worker</filename>
вместо стандартного модуля MPM <filename>prefork</filename>.
Чтобы сделать это, нужно добавить следующий аргумент к ./configure на шаге 3:
</para>
<informalexample>
<screen>
<para>
Для сборки веб-сервера Apache, который будет работать в многопоточном режиме,
при сборке Apache вместо стандартного мультипроцессного MPM-модуля <filename>prefork</filename>
выбирают мультипроцессный MPM-модуль, который отвечает на запросы
по модели <filename>worker</filename>: обрабатывает отдельный запрос в отдельном потоке
многопоточного процесса. Чтобы сделать это, к аргументу, который передали команде ./configure
на шаге 3, добавляют следующую опцию:
</para>
<informalexample>
<screen>
<![CDATA[
--with-mpm=worker
]]>
</screen>
</informalexample>
<para>
Не следует бездумно использовать эту настройку, используйте её только если вы
понимаете все последствия этого решения. Документация Apache
по <link xlink:href="&url.apache2.mpm;">модулям MPM</link>
значительно глубже раскрывает эту тему.
</para>
<note>
<para>
Если вы хотите использовать зависимый контент (content negotiation),
прочитайте
<link linkend="faq.installation.apache.multiviews">Apache MultiViews
FAQ</link>.
</para>
</note>
<note>
<para>
Для сборки многопоточной версии Apache, ваша система должна
поддерживать потоки. Это так же подразумевает сборку PHP c
поддержкой Zend Thread Safety (ZTS). И, как следствие, не все модули PHP смогут работать.
Рекомендуется установка Apache с модулем MPM по умолчанию - <filename>prefork</filename>.
</para>
</note>
</screen>
</informalexample>
<para>
Веб-сервер собирают для работы по такой модели, только если осознают
последствия решения и отчётливо понимают смысл действий. Документация Apache
<link xlink:href="&url.apache2.mpm;">к MPM-модулям</link>
рассматривает работу модулей MPM подробнее.
</para>
<note>
<para>
В разделе FAQ в ответе на вопрос
<link linkend="faq.installation.apache.multiviews">о параметре MultiViews в настройках Apache</link>
обсуждается согласование контента множественного представления при работе веб-сервера с PHP-файлами.
</para>
</note>
<note>
<para>
Только в системах с поддержкой потоков получится собрать многопоточную версию Apache.
Тогда требуется и PHP-сборка с поддержкой потокобезопасного ZTS-режима (англ. Zend Thread Safety).
В этой конфигурации не каждое расширение будет доступно. Разработчики PHP рекомендуют
собрать Apache, который настроили на работу с MPM-модулем <filename>prefork</filename> по умолчанию.
</para>
</note>
</sect1>
<!-- Keep this comment at the end of the file
Local variables: