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

10 0 Новини високих технологій

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


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

Не потрібно «бахать» тонни коду від іменитих попередників у вирішення задачі, достатньо написати красивий і добре коментований код. Але саме великому кодом, популярних веб-ресурсів, технологічних недоліків Php і зростання навантаження (відвідувачів) на веб-ресурси зобов'язані своїм народженням численні варіанти прискорення обробки запитів на веб-сервери.
Php-fpm: установка і настройка
Звичайний сервер бере все навантаження на себе, розписує її по процесам і хитромудрим логікам. Його потужність обмежена, і він змушений ставити нові запити в чергу, поки не впорається з тими, що вже в роботі. Різні варіанти 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 потрібно більше знань.
Php-fpm: установка і настройка
Інші лінукси менш популярні, хоча в кожному конкретному випадку слід уважно оцінити всі обставини і прийняти зважене рішення. Наприклад, вітчизняний RUNTU, про який мало хто знає, може швидко врятувати ситуацію, коли потрібно встановити систему у віртуальному контейнері з обмеженим простором усередині локальної мережі і при інших незручності.
Мало поставити Php-fpm, його треба ще й перевірити перед «виходом у світ». RUNTU - ідеальний тестер, коли у зовнішній світ дивиться тільки настроюється комп'ютер (його віртуальний контейнер). В локальній мережі завжди можна швидко налагодити мирний контакт. Можна буде перевірити не тільки Php-fpm: настройка і перевірка декількох віртуальних хостів Nginx також буде доступна. Завжди краще починати з установки системи. У випадках, коли система вже варто і потрібно поставити тільки Php-fpm, можуть виникнути непередбачені проблеми. Наприклад, в CentOS 6 і обмеження Php 5. В CentOS 7 і Apache + Php 7. Мода на віртуальні машини - теж обмеження. Свіжоспечена і перспективна «Космічна Каракатиця» (Ubuntu 1810 Cosmic Cuttlefish) може запросто стати в віртуальний контейнер, але працювати принципово не буде. Виглядає як декларація: моя середовище - космічний простір, а не якийсь там контейнер. Линуксоид - це не Windows, але характер проявити може і робить це при всякому зручному випадку. Тільки знання та вміння допомагають впоратися з поставленим завданням будь операційному середовищі.

Установка UBUNTU

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

Установка Nginx

Достатньо однієї команди і кількох хвилин. Сучасний і швидкий веб-сервер став на машину або в контейнер. Потрібно тільки відкрити порти в брандмауера і можна буде йти далі.
Php-fpm: установка і настройка
Основна конфігурація Nginx знаходиться за адресою:
  • /etc/nginx
  • і слід завжди пам'ятати про трьох командах:
  • systemctl status nginx;
  • systemctl stop nginx;
  • systemctl start nginx.
  • Їх слід використовувати при всякій зміні конфігурації сервера. Не слід також забувати, що зміна конфігурації, реєстрація віртуальних хостів пов'язана з IP адресами та іменами хостів, які також повинні бути враховані у файлі hosts, який знаходиться за адресою:
  • /etc.
  • Не принципово коли ставити Php-fpm, Php, MySQL, Apache і Nginx, але розумніше починати з останніх двох позицій, а потім переходити до інших.

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

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

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

    У кореневій папці сайту слід створити файл index.php і виконати тестування конфігурації Nginx. Проблем не буде, якщо все зроблено акуратно і правильно. Потім можна перезапустити веб-сервер і отримати необхідний результат.
    Php-fpm: установка і настройка
    У наведеному прикладі автоматом став Php-fpm 7.2. У кожному конкретному випадку можуть бути інші варіанти. Часто використовується Php 5 і відповідний йому швидкий менеджер.

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

    Php - популярний і використовується мова. Зовсім не образливо, що між 5 і 7 версією кудись поділася 6-я версія. Можна не згадувати, що Php 5.2.* і 5.6.* - це «різні» продукти. Як будь-який інший мову, інтерпретатор Php страждає витоками пам'яті. До втрат пам'яті, особливо коли справа доходить до рекурсії, стека і інших «безконтрольних» ділянок коду, програмісти звикли. Стало нормою після виконання критичного ділянки коду знищувати все, що з ним пов'язане. Проблемно і критично інше. З появою систем управління сайтами (CMS) стало звичним ганяти тонни марного (тобто не відображається коду з сервера в надра браузера, а вони не безмежні. Канали зв'язку гарні, але вони відчувають себе набагато спокійніше, коли по них переміщається тільки потрібна інформація.
    Php-fpm: установка і настройка
    Це дуже добре, що тепер є Php-fpm. Можна ефективно маніпулювати навантаженням, відокремлювати статику від динаміки. Але набагато краще, коли розробник створює веб-ресурс з мінімально можливим і якісним кодом. Сучасні технології гарні тільки тоді, коли використовуються в тому обсязі і якості, коли вони ефективні, компактні і практичні.