Php-fpm: установка і настройка

Сучасне програмування – це розподілена обробка зростаючих обсягів інформації. Локальні інструменти в далекому минулому. Актуальні веб-сервери, розподілені колективи розробників і споживачів. Завдання та області застосування перетворилися в потоки запитів, на які потрібні миттєві відповіді.

Php – популярна мова програмування, але він «тече» за власною ініціативою і забезпечує благодатний грунт для кваліфікованих розробників створювати тонни неефективного коду. Програміст-початківець перспективніше аса комп’ютерних технологій на тій простій підставі, що відноситься до роботи акуратно, уважно і старанно вирішує поставлену задачу мінімальним об’ємом коду.

Причини появи і ідея fpm

Не потрібно «бахать» тонни коду від іменитих попередників у вирішення задачі, достатньо написати красивий і добре коментований код. Але саме великому кодом, популярних веб-ресурсів, технологічних недоліків Php і зростання навантаження (відвідувачів) на веб-ресурси зобов’язані своїм народженням численні варіанти прискорення обробки запитів на веб-сервери.

Звичайний сервер бере все навантаження на себе, розписує її по процесам і хитромудрим логікам. Його потужність обмежена, і він змушений ставити нові запити в чергу, поки не впорається з тими, що вже в роботі.

Різні варіанти SAPI (Server API) в тій чи іншій мірі вирішували завдання швидкої обробки потоку запиту, але обмеження залишалися. Поява Nginx представило веб-ресурс як сукупність статики і динаміки, перевело роботу по обслуговуванню хостингу в сферу подій і управління навантаженням.

На веб-сторінці не так багато Php, але завжди багато тексту, зображень та інших елементів, які можна сміливо відправляти в браузер відвідувача відразу, без обробки яким-небудь процесом сервера. Тільки коли на сторінці є Php-код, слід застосувати Php або Php-fpm.

По суті, мова йде про швидкий менеджер процесів (FastCGI Process Manager). І його можна запускати безліч разів, але тільки за обґрунтованої необхідності. На кожен запит буде власний процес. Наступний запит – наступний процес. Це суттєво змінює стан речей, і сторінка сайту в повному обсязі швидше опиниться в браузері відвідувача.

Не можна сказати, що ідея Nginx і Php-fpm – ліки від усіх проблем, але у багатьох випадках – це відмінне рішення для створення продуктивного веб-сервера. Можна піти ще далі, поєднавши досвід і мудрість Apache з молодістю і амбітністю Nginx. В такому випадку, громіздкі процеси можна відправити до Apache, а легкі сторінки – Php-fpm.

Оцінка ситуації та підготовка

Все сімейство линуксоидов відрізняє простота і зручність. Насправді, для адміністрування цих систем потрібні знання та вміння. Система UBUNTU під Php-fpm і Nginx – хороший вибір. Для корпоративно-орієнтованої CentOS потрібно більше знань.

Інші лінукси менш популярні, хоча в кожному конкретному випадку слід уважно оцінити всі обставини і прийняти зважене рішення.

Наприклад, вітчизняний RUNTU, про який мало хто знає, може швидко врятувати ситуацію, коли потрібно встановити систему у віртуальному контейнері з обмеженим простором усередині локальної мережі і при інших незручності.

Мало поставити Php-fpm, його треба ще й перевірити перед «виходом у світ». RUNTU – ідеальний тестер, коли у зовнішній світ дивиться тільки ваш комп’ютер (його віртуальний контейнер). В локальній мережі завжди можна швидко налагодити мирний контакт. Можна буде перевірити не тільки Php-fpm: настройка і перевірка декількох віртуальних хостів Nginx також буде доступна.

Завжди краще починати з установки системи. У випадках, коли система вже варто і потрібно поставити тільки Php-fpm, можуть виникнути непередбачені проблеми. Наприклад, в CentOS 6 і обмеження Php 5. В CentOS 7 і Apache + Php 7.

Мода на віртуальні машини – теж обмеження. Свіжоспечена і перспективна «Космічна Каракатиця» (Ubuntu 18.10 Cosmic Cuttlefish) може запросто стати в віртуальний контейнер, але працювати принципово не буде. Виглядає як декларація: моя середовище – космічний простір, а не якийсь там контейнер.

Линуксоид – це не Windows, але характер проявити може і робить це при всякому зручному випадку. Тільки знання та вміння допомагають впоратися з поставленим завданням у будь-якій операційній середовищі.

Установка UBUNTU

Поставити UBUNTU 18.04 в серверному виконанні – просте і практичне рішення.

Швидко, просто і практично. Добру основу, до якого адекватно ставиться будь лінукс – це практика. Навіть якщо потрібно поставити php-fpm на CentOS 6, не завадить пройти перевірку на надійною і простою системою. Легше буде розуміти, де і що шукати в тій системі, на яку орієнтована завдання.

Установка Nginx

Достатньо однієї команди і кількох хвилин. Сучасний і швидкий веб-сервер став на машину або в контейнер. Потрібно тільки відкрити порти в брандмауера і можна буде йти далі.

Основна конфігурація Nginx знаходиться за адресою:

  • /etc/nginx

і слід завжди пам’ятати про трьох командах:

  • systemctl status nginx;
  • systemctl stop nginx;
  • systemctl start nginx.

Їх слід використовувати при всякій зміні конфігурації сервера. Не слід також забувати, що зміна конфігурації, реєстрація віртуальних хостів пов’язана з IP адресами та іменами хостів, які також повинні бути враховані у файлі hosts, який знаходиться за адресою:

  • /etc.

Не принципово коли ставити Php-fpm, Php, MySQL, Apache і Nginx, але розумніше починати з останніх двох позицій, а потім переходити до інших.

Установка швидкого менеджера

Встановлення Php-fpm являє собою одну команду і дві дії.

Виконується інсталяція, прибирається крапка з комою (символ коментаря) у файлі php.ini і проводиться перезапуск менеджера.

Важливо звернути увагу: посилання на швидкий менеджер – це файл конфігурації сайту. В даному випадку, на сервері є тільки вихідний сайт і його конфігурація у файлі default.

Для кожного віртуального хоста, потрібно буде у файлі конфігурації в блоці server зробити відповідні зміни.

На малюнку виділено три блоки location: перший там вже був, два наступних додані. Перший стосується всього, другий тільки Php-файлів, третій робить заборона на файли .ht* – маються на увазі файли конфігурації Apache.

Тестування виконаної роботи

У кореневій папці сайту слід створити файл index.php і виконати тестування конфігурації Nginx. Проблем не буде, якщо все зроблено акуратно і правильно.

Потім можна перезапустити веб-сервер і отримати необхідний результат.

У наведеному прикладі автоматом став Php-fpm 7.2. У кожному конкретному випадку можуть бути інші варіанти. Часто використовується Php 5 і відповідний йому швидкий менеджер.

Технологічні деталі

Php – популярний і використовується мова. Зовсім не образливо, що між 5 і 7 версією кудись поділася 6-я версія. Можна не згадувати, що Php 5.2.* і 5.6.* – це «різні» продукти.

Як будь-який інший мову, інтерпретатор Php страждає витоками пам’яті. До втрат пам’яті, особливо коли справа доходить до рекурсії, стека і інших «безконтрольних» ділянок коду, програмісти звикли. Стало нормою після виконання критичного ділянки коду знищувати все, що з ним пов’язане.

Проблемно і критично інше. З появою систем управління сайтами (CMS) стало звичним ганяти тонни марного (тобто не відображається коду з сервера в надра браузера, а вони не безмежні. Канали зв’язку гарні, але вони відчувають себе набагато спокійніше, коли по них переміщається тільки потрібна інформація.

Це дуже добре, що тепер є Php-fpm. Можна ефективно маніпулювати навантаженням, відокремлювати статику від динаміки. Але набагато краще, коли розробник створює веб-ресурс з мінімально можливим і якісним кодом.

Сучасні технології гарні тільки тоді, коли використовуються в тому обсязі і якості, коли вони ефективні, компактні і практичні.