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.