@@ -1,329 +1,354 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN - Revision: b0dd627899cf5c57d3d64fac07e9b6579dfca082 Maintainer: mproshchuk Status: ready -->
<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 >
Цей розділ містить замітки та підказки щодо встановлення Apache 2.x з PHP в
системи Unix.
</para>
<!-- EN - Revision: e51792efe0f103ec8724ad199524d7543610c978 Maintainer: mproshchuk Status: ready -->
<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 >
Цей розділ містить замітки та підказки щодо встановлення Apache 2.x з PHP в
системи Unix.
</para>
&warn.apache2.compat;
&warn.apache2.compat;
<para >
<link xlink:href= "&url.apache2.docs;" > Документація на сайті Apache</link>
є найбільш авторитетним джерелом інформації про сервер Apache 2.x.
Там можна знайти більше інформації про параметри його інсталяції.
</para>
<para >
Найновішу версію HTTP-сервера Apache можна отримати на
<link xlink:href= "&url.apache;" > сторінці завантаження Apache</link> .
Також треба завантажити потрібну версію PHP (див. навігаційну панель вгорі).
Тут є лише короткий опис базового встановлення Apache 2.x та PHP. Детальнішу
інформацію можна прочитати в
<link xlink:href= "&url.apache2.docs;" > Документації Apache</link> .
Зазначення конкретного номера версії навмисно оминається, щоб не плутати
користувачів наведених тут інструкцій. Внизу в прикладах, 'NN' потрібно
замінити версією Apache, яка буде використовуватись.
</para>
<para >
Н а даний момент є дві версії Apache 2.x - це 2.2 та 2.4.
Хоча є певні причини для вибору однієї чи іншої версії, але 2.4 є зараз
найновішою та рекомендованою. Тим не менш, наведені тут інструкції мають
працювати для о б о х версій. Варто зазначити, що Apache httpd 2.2 офіційно не
підтримується і для нього не випускаються нові розробки чи виправлення.
</para>
<orderedlist >
<listitem >
<para >
<link xlink:href= "&url.apache2.docs;" > Документація на сайті Apache</link>
є найбільш авторитетним джерелом інформації про сервер Apache 2.x.
Там можна знайти більше інформації про параметри його інсталяції.
Завантаживши HTTP-сервер Apache за посиланням вище, його необхідно
розпакувати:
</para>
<para >
Найновішу версію HTTP-сервера Apache можна отримати на
<link xlink:href= "&url.apache;" > сторінці завантаження Apache</link> .
Також треба завантажити потрібну версію PHP (див. навігаційну панель вгорі).
Тут є лише короткий опис базового встановлення Apache 2.x та PHP. Детальнішу
інформацію можна прочитати в
<link xlink:href= "&url.apache2.docs;" > Документації Apache</link> .
Зазначення конкретного номера версії навмисно оминається, щоб не плутати
користувачів наведених тут інструкцій. Внизу в прикладах, 'NN' потрібно
замінити версією Apache, яка буде використовуватись.
</para>
<para >
Н а даний момент є дві версії Apache 2.x - це 2.2 та 2.4.
Хоча є певні причини для вибору однієї чи іншої версії, але 2.4 є зараз
найновішою та рекомендованою. Тим не менш, наведені тут інструкції мають
працювати для о б о х версій. Варто зазначити, що Apache httpd 2.2 офіційно не
підтримується і для нього не випускаються нові розробки чи виправлення.
</para>
<orderedlist >
<listitem >
<para > Завантаживши HTTP-сервер Apache, його необхідно розпакувати:</para>
<informalexample >
<screen >
<informalexample >
<screen >
<![CDATA[
tar -xzf httpd-2.x.NN.tar.gz
]]>
</screen>
</informalexample>
</listitem>
<listitem >
<para > Аналогічно, неодхідно розпаковати файли з початковим кодом PHP:</para>
<informalexample >
<screen >
</screen>
</informalexample>
</listitem>
<listitem >
<para >
Таким же способом необхідно розпакувати файли з початковим кодом PHP:
</para >
<informalexample >
<screen >
<![CDATA[
tar -xzf php-NN.tar.gz
]]>
</screen>
</informalexample>
</listitem>
<listitem >
<para >
Далі потрібно зібрати та встановити Apache. Докладніші рекомент ації є на
сайті Apache.
</para>
</screen>
</informalexample>
</listitem>
<listitem >
<para >
Далі потрібно зібрати та встановити Apache. Докладніші рекоменд ації є в
документації щодо встановлення Apache.
</para>
<informalexample >
<screen >
<informalexample >
<screen >
<![CDATA[
cd httpd-2_x_NN
./configure --enable-so
make
make install
]]>
</screen>
</informalexample>
</listitem>
<listitem >
<para >
Тепер Apache 2.x.NN доступний за адресою /usr/local/apache2, зі
встановленим стандартним модулем MPM prefork та конфігурацією, яка
дозволяє додавати інші потрібні модулі. Щоб перевірит и інсталяцію,
використовується звичайна процедура для старт у сервера Apache, наприклад:
<informalexample >
<screen >
</screen>
</informalexample>
</listitem>
<listitem >
<para >
Тепер Apache 2.x.NN доступний за адресою /usr/local/apache2, зі
встановленим стандартним модулем MPM prefork та конфігурацією, яка дозволяє
додавати інші потрібні модулі. Для перевірк и інсталяції використовується
звичайна процедура запуск у сервера Apache, наприклад:
<informalexample >
<screen >
<![CDATA[
/usr/local/apache2/bin/apachectl start
]]>
</screen>
</informalexample>
далі треба зупинити сервер, щоб перейти до встановле ння PHP:
<informalexample >
<screen >
</screen>
</informalexample>
далі треба зупинити сервер, щоб перейти до налаштува ння PHP:
<informalexample >
<screen >
<![CDATA[
/usr/local/apache2/bin/apachectl stop
]]>
</screen>
</informalexample>
</para>
</listitem>
<listitem >
</screen>
</informalexample>
</para>
</listitem>
<listitem >
<para >
Тепер треба налаштувати та зібрати PHP. Наприклад, визначити, які саме
розширення будуть включені в PHP. Для перегляду списку доступних
параметрів необхідно запустити <command > ./configure --help</command> . В
цьому прикладі виконується проста конфігурація Apache 2 з підтримкою MySQL.
</para>
<para >
Тепер конфігуруємо та збираємо PHP. Наприклад, визначаємо які саме
розширення будуть включені в PHP. Щоб побачити список доступних
параметрів, запускаємо <command > ./configure --help </command> . В даному
прикладі виконується проста конфігурація Apache 2 з підтримкою MySQL.
</para >
<para >
Якщо Apache було зібрано вручну, як описано вище, в наступному прикладі
шлях буде відповідати розташуванню apxs, але якщо Apache встановлювався
по-іншому, то потрібно змінити шлях до apxs. Варто зауважити, що деякі
дистрибутиви можуть перейменувати apxs в apxs2.
</para>
<informalexample >
<screen >
<para >
Якщо Apache було зібрано вручну, як описано вище, в наступному прикладі
шлях буде відповідати розташуванню <command > apxs</command> , але якщо Apache
встановлено по-іншому, то потрібно змінити шлях до <command > apxs </command> .
Варто зауважити, що деякі дистрибутиви можуть перейменувати
<command > apxs</command> в <command > apxs2</command >.
</para>
<informalexample >
<screen >
<![CDATA[
cd ../php-NN
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql
make
make install
]]>
</screen>
</informalexample>
</screen>
</informalexample>
<para >
Для зміни конфігурації після інсталяції, потрібно запустити за ново кроки:
configure, make та make install. Після цього перезапустити Apache, щоб
зміни були застосовані. Перекомпільовувати Apache не потрібно.
</para>
<para >
Для зміни конфігурації після інсталяції, потрібно заново виконати кроки:
<command > configure</command> , <command > make</command> та <command > make
install</command> . Після цього перезапустити Apache, щоб зміни були
застосовані. Перекомпільовувати Apache не потрібно.
</para>
<para >
Варто зауважити, що якщо не сказано іншого, то команда <command > make
install</command> також встановлює
<link xlink:href= "&url.php.pear;" > PEAR</link> , різноманітні інструменти
PHP, як от <link linkend= "install.pecl.phpize" > phpize</link> , PHP CLI та
інші.
</para>
</listitem>
<listitem >
<para >
Налаштування <filename > php.ini</filename> .
</para>
<para >
Варто зауважити, що якщо не сказано іншого, то 'make install' буде також
встановлювати PEAR, PHP CLI, певні сервіси PHP, такі як phpize та інше.
</para>
</listitem>
<listitem >
<para >
Встановлення php.ini.
</para>
<informalexample >
<screen >
<informalexample >
<screen >
<![CDATA[
cp php.ini-development /usr/local/lib/php.ini
]]>
</screen>
</informalexample>
</screen>
</informalexample>
<para >
Можна редагувати файл .ini , додаючи потрібні опції PHP. Для розміщення
php.ini в іншому місці, використовується опція
<command > --with-config-file-path=/some/path</command> на 5-му кро ці.
</pa ra>
<para >
Якщо буде обрано php.ini-production, краще прочитати список відмінностей
між файлами .ini, щоб розуміти як це вплине на поведінку PHP.
</pa ra>
<para >
Можна редагувати файл <literal > .ini</literal> , додаючи потрібні опції PHP.
Для розміщення <filename > php.ini</filename> в іншому місці
використовується оп ція
<literal > --with-config-file-path=/some/path</lite ral > на 5-му кроці.
</para>
<para >
Якщо буде обрано <filename > php.ini-production</filename> , краще прочитати
список відмінностей між файлами <literal > .ini</lite ral > , щоб розуміти як це
вплине на поведінку PHP.
</para>
</listitem>
</ listitem>
<listitem >
<listitem >
<para >
Відредагуємо <filename > httpd.conf</filename> , щоб завантажувався модуль
PHP. Шлях, який зазначено праворуч від оператора
<literal > LoadModule</literal> , повинен вказувати на розташування модуля PHP
у системі. Згадана раніше команда <command > make install</command> повинна
це робити, але краще перевірити.
</para>
<para >
Відредагуємо httpd.conf, щоб завантажувався модуль PHP. Шлях, який
зазначено праворуч від запису LoadModule, повинен вказувати на
розташування модуля PHP у системі. Команда <command > make
install</command> , про яку тут згадувалось раніше, повинна вже була
зробити це, але краще перевірити ще раз.
</para>
<informalexample >
<para >
Для PHP 8:
</para>
<informalexample >
<programlisting role= "apache-conf" >
<programlisting role= "apache-conf" >
<![CDATA[
LoadModule php_module modules/libphp.so
]]>
</programlisting>
</informalexample>
<informalexample >
<para >
Для PHP 7:
</para>
<programlisting role= "apache-conf" >
</programlisting>
</informalexample>
<informalexample >
<para >
Для PHP 7:
</para >
<programlisting role= "apache-conf" >
<![CDATA[
LoadModule php7_module modules/libphp7.so
]]>
</programlisting>
</informalexample>
</listitem>
<listitem >
<para >
Скажемо Apache, щоб обробляв розширення .php через PHP. Замість того, щоб
використовувати лише директиву Apache AddType, ми хочемо уникнути
потенційної небезпеки завантаження та створення файлів, таких як
exploit.php.jpg, які будуть оброблятись через PHP. Використовуючи цей
приклад, можна додати будь-яке закінчення (і не одне), яке буде
оброблятись через PHP. Ми вказали .php лише для прикладу .
</para>
<informalexample >
<programlisting role= "apache-conf" >
</programlisting>
</informalexample>
</listitem>
<listitem >
<para >
Скажемо Apache обробляти файли з певним закінченням через PHP. Наприклад, з
<literal > .php</literal> . Замість того, щоб використати лише директиву
Apache <literal > AddType</literal> , краще не дати обробити через PHP
потенційно небезпечні завантаження та створені файли на кшталт
<filename > exploit.php.jpg</filename> . Використовуючи наступний приклад,
можна додати будь-яке (і не одне) закінчення, яке потрібно обробляти через
PHP. Тут <literal > .php</literal> вказано суто для прикладу.
</para >
<informalexample >
<programlisting role= "apache-conf" >
<![CDATA[
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
]]>
</programlisting>
</informalexample>
<para >
А б о ж, якщо ми хочемо дозволити щоб файли .php, .php2, .php3, .php4, .php5 ,
.php6, та .phtml оброблялись через PHP, але ніякі інші, ми пишемо так:
</pa ra>
</programlisting>
</informalexample>
<para >
А б о ж, якщо треба дозволити PHP обробляти файли <literal > .php</literal> ,
<literal > .php2</literal> , <literal > .php3</literal> ,
<literal > .php4</literal> , <literal > .php5</lite ral >,
<literal > .php6</literal> та <literal > .phtml</literal> , але ніякі інші,
то можна використати такий код:
</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 >
А б о щоб дозволити файли .phps обробляти через php source filter, та
показувати їх вміст з підсвічуванням синтаксису, використовується таке:
</para>
<para >
Для обробки <literal > .phps</literal> через " php source filter" з метою
показувати їх вміст з підсвічуванням синтаксису, використовується таке:
</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:
</pa ra>
<para >
Можна використовувати модуль <literal > mod_rewrite</literal> , щоб дозволити
показувати початковий код з підсвічуванням синтаксису в файлах і з
закінченням <literal > .php</literal> без необхідності переназивати їх чи
копіювати їхній код до файлів <literal > .phps</lite ral > :
</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 >
Н е слід вмикати php source filter на виробничих системах , де він може
розкрити конфіденційну а б о іншу важливу інформацію, розміщену в
початковому коді.
</para>
<para >
Н е слід вмикати " php source filter" у виробничому середовищі , де він може
розкрити конфіденційну а б о іншу важливу інформацію, розміщену в коді.
</para>
</listitem>
</listitem>
<listitem >
<para >
С тандартну процедура запуску сервер Apache:
</para>
<informalexample >
<screen >
<listitem >
<para >
Краще застосовувати с тандартну процедуру запуску сервера Apache:
</para>
<informalexample >
<screen >
<![CDATA[
/usr/local/apache2/bin/apachectl start
]]>
</screen>
</informalexample>
<para > АБО:</para>
<informalexample >
<screen >
</screen>
</informalexample>
<para > АБО:</para >
<informalexample >
<screen >
<![CDATA[
service httpd restart
]]>
</screen>
</informalexample>
</listitem>
</orderedlist>
</screen>
</informalexample>
</listitem>
</orderedlist>
<para >
Дотримуючись зазначених вище кроків, ми запустимо вебсервер Apache2 з
підтримкою PHP як модуля <literal > SAPI</literal> . Звичайно, є значно більше
параметрів, доступних для Apache та PHP. Більше інформації можна отримати
ввівши в консолі <command > ./configure --help</command> в їхніх кореневих
теках .
</para>
<para >
Apache можна зробити багатопотоковим, вибравши
<filename > worker</filename> MPM, замість стандартного
<filename > prefork</filename> MPM під час збирання Apache, додавши наступний
параметр до <command > ./configure</command> на 3-му кроці:
</para>
<informalexample >
<screen >
<para >
Дотримуючись зазначених вище кроків можна запустити вебсервер Apache2 з
підтримкою PHP як модуля <literal > SAPI</literal> . Звичайно, є значно більше
параметрів, доступних для Apache та PHP. Більше інформації можна отримати,
ввівши в консолі <command > ./configure --help</command> в кореневих теках
початкових файлів .
</para>
<para >
Apache можна зробити багатопотоковим, вибравши <filename > worker</filename>
MPM замість стандартного <filename > prefork</filename> MPM під час збирання
Apache, додавши наступний параметр до <command > ./configure</command> на 3-му
кроці:
</para >
<informalexample >
<screen >
<![CDATA[
--with-mpm=worker
]]>
</screen>
</informalexample>
<para >
Н е варто бездумно використовувати цю опцію, а тільки, якщо відомо про всі
наслідки такого рішення. В документації для Apache стосовно
<link xlink:href= "&url.apache2.mpm;" > модулів MPM</link> значно детальніше
розкрита ця тема.
</para>
<note >
<para >
У розділі "Часті питання (ЧаПи)" з приводу
<link linkend= "faq.installation.apache.multiviews" > Apache MultiViews
</link> є відповідь, чи можна використовувати цю опцію разом з PHP.
</para>
</note>
<note >
<para >
Щоб зібрати версію багатопотокового Apache, цільова система повинна
мати підтримку потоків. В ць ому випадку, PHP потрібно також збирати з
Zend Thread Safety (ZTS). Цю конфігурацію підтримують не всі розширення.
Ми рекомендуємо встановлювати Apache зі стандартним модулем
<filename > prefork</filename> MPM.
</para >
</note >
</sect1>
</screen>
</informalexample>
<para >
Н е варто бездумно використовувати цю опцію, а тільки, якщо відомо про всі
наслідки такого рішення. В документації для Apache стосовно
<link xlink:href= "&url.apache2.mpm;" > модулів MPM</link> значно детальніше
розкрита ця тема.
</para >
<note >
<para >
У розділі <link linkend= "faq.installation.apache.multiviews" > ЧаПи про Apache
MultiViews</link> обговорено використання цієї опції разом з PHP.
</para>
</note>
<note >
<para >
Щоб зібрати версію багатопотокового Apache, цільова система повинна мати
підтримку потоків. В так ому разі PHP потрібно також збирати з Zend Thread
Safety (ZTS). Цю конфігурацію підтримують не всі розширення. Рекомендовано
встановлювати Apache зі стандартним модулем <filename > prefork</filename> MPM.
</para>
</note >
</sect1 >
<!-- Keep this comment at the end of the file
Local variables: