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