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 потребуется больше знаний.

Хороший выбор NGiNX & php-fpm

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

Например, отечественный 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 в серверном исполнении - простое и практичное решение.

UBUNTU 18.04: установка

Быстро, просто и практично. Хорошее основание, к которому адекватно относится любой линукс - это практика. Даже если нужно поставить php-fpm на CentOS 6, не помешает пройти проверку на надежной и простой системе. Легче будет понимать, где и что искать в той системе, на которую ориентирована задача.

Установка Nginx

Достаточно одной команды и нескольких минут. Современный и быстрый веб-сервер стал на машину или в контейнер. Нужно только открыть порты в файерволе и можно будет идти дальше.

Установка 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-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. Можно эффективно манипулировать нагрузкой, отделять статику от динамики. Но гораздо лучше, когда разработчик создает веб-ресурс с минимально возможным и качественным кодом.

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

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.