php fpm для чего

Менеджер процессов FastCGI (FPM)

Содержание

FPM (FastCGI Process Manager, менеджер процессов FastCGI) является альтернативной реализацией PHP FastCGI с несколькими дополнительными возможностями обычно используемыми для высоконагруженных сайтов.

Эти возможности включают в себя:

    продвинутое управление процессами с корректной (graceful) процедурой остановки и запуска;

    возможность запуска воркеров с разными uid/gid/chroot/окружением, а также запуска на различных портах с использованием разных php.ini (замещение safe_mode);

    логирование стандартных потоков вывода (stdout) и ошибок (stderr);

    аварийный перезапуск в случае внезапного разрушения opcode-кеша;

    поддержка ускоренной загрузки (accelerated upload);

    Динамическое/статическое порождение дочерних процессов;

    Базовая информация о статусе SAPI (аналогично Apache mod_status);

    Конфигурационный файл, основанный на php.ini.

    User Contributed Notes 8 notes

    You will probably want to create an init script for your new php-fpm. Fortunately, PHP 5.3.3 provides one for you, which you should copy to your init directory and change permissions:

    /sapi/fpm/init.d.php-fpm.in /etc/init.d/php-fpm
    $ chmod 755 /etc/init.d/php-fpm

    It requires a certain amount of setup. First of all, make sure your php-fpm.conf file is set up to create a PID file when php-fpm starts. E.g.:
    —-
    pid = /var/run/php-fpm.pid
    —-
    (also make sure your php-fpm user has permission to create this file).

    Now open up your new init script (/etc/init.d/php-fpm) and set the variables at the top to their relevant values. E.g.:

    prefix=
    exec_prefix=
    php_fpm_BIN=/sbin/php-fpm
    php_fpm_CONF=/etc/php-fpm.conf
    php_fpm_PID=/var/run/php-fpm.pid

    Your init script is now ready. You should now be able to start, stop and reload php-fpm:

    $ /etc/init.d/php-fpm start
    $ /etc/init.d/php-fpm stop
    $ /etc/init.d/php-fpm reload

    The one remaining thing you may wish to do is to add your new php-fpm init script to system start-up. E.g. in CentOS:

    $ /sbin/chkconfig php-fpm on

    Disclaimer: Although I did just do this on my own server about 20 mins ago, everything I’ve written here is off the top of my head, so it may not be 100% correct. Also, allow for differences in system setup. Some understanding of what you are doing is assumed.

    Источник

    Режимы работы PHP: mod_php, FastCGI и PHP-FPM на VPS

    Веб-серверы могут обрабатывать php-скрипты в разных режимах. Если выбрать подходящий вариант взаимодействия PHP и веб-сервера на сайте, например, PHP как CGI или Apache-модуль, это положительно отразится на его производительности.

    Выбрать режим работы PHP можно на VPS с панелью управления ISPmanager и Plesk. На виртуальном хостинге REG.RU по умолчанию используется режим FastCGI.

    Подробнее о том, какие режимы PHP поддерживаются на хостинге REG.RU, читайте в статье.

    В этой статье мы рассмотрим основные режимы работы PHP.

    PHP как модуль Apache (mod_php)

    Модуль для веб-сервера Apache, который позволяет ему обрабатывать все запросы PHP, не используя сторонние модули.

    Можно вводить переменные PHP в .htaccess.

    отдельные пользователи на сервере с mod_php не могут вносить изменения, если у них нет прав доступа на все процессы, с которыми он работает. Иными словами, права веб-сервера должны выдаваться всем пользователям на сервере;

    Низкий уровень безопасности, так как нельзя определить пользователя, который запустил конкретный процесс (все процессы выполняются анонимно под пользователем apache);

    Ошибки в скриптах могут парализовать работу всего сервера;

    Веб-серверы с mod_php медленно обрабатывают статические данные.

    PHP в режиме CGI и FastCGI

    PHP CGI — один из первых сценариев обработки php-скриптов сервером с помощью модуля mod_cgi. Сейчас он используется редко и считается устаревшим.

    В этом режиме каждый php-запрос выполняется отдельным процессом. Из-за этого производительность сайта снижается, и на обработку скриптов требуется больше времени.

    При создании сценария FastCGI учли медленную скорость обработки скриптов в CGI, поэтому в этом режиме используется циклическая обработка нескольких запросов одним процессом. FastCGI — это экономия оперативной памяти за счет сокращения количества запущенных процессов.

    Пользователь обладает правами на выполнение всех скриптов на своем www-домене;

    Безопасность (каждый запрос выполняется под отдельным пользователем, запуск небезопасного php-скрипта не повлияет на файлы других пользователей, которые находятся на одном с ним сервере);

    Каждый пользователь на сервере может выбрать персональную версию PHP;

    Отсутствие сбоев сервера при наличии ошибок в скриптах;

    Обработка правил конфигурационного файла .htaccess, который поддерживается популярными CMS (WordPress, Joomla, 1C-Битрикс и пр.).

    Чуть меньшая производительность по сравнению с модулем Apache;

    Медленная обработка статических данных без связки с веб-сервером Nginx.

    PHP в режиме FPM

    FPM (FastCGI Process Manager) — альтернативная реализация PHP FastCGI. PHP FPM — это единственный модуль, который подходит для чистого веб-сервера Nginx.

    Как работает PHP FPM:

    Быстрая обработка статических данных;

    Отсутствует необходимость в веб-сервере Apache;

    Меньшее потребление оперативной памяти.

    О выборе режима PHP

    Выбор режима PHP зависит от требований ваших сайтов и доступных ресурсов сервера. В большинстве случаев мы рекомендуем использовать клиентам режим FastCGI, так как он подходит для корректной работы большинства CMS и требует меньше действий со стороны пользователя.

    Закажите сервер с чистой CentOS или панелью управления ISPmanager всего за пару минут.

    Источник

    Nginx, Php-Fpm и что это вообще?

    FPM

    SAPI, он же Server API. В php есть несколько таких API для разных вариантов его работы:

    Во вторую очередь, FPM действительно умный менеджер процессов. Он контролирует количество работающих PHP-процессов, частоту их перезапуска для борьбы с утечками памяти (да, модули php как и всегда текут) и прочие простые вещи, необходимые для контроля сервера.

    Один процесс одновременно обрабатывает один запрос. Это абсолютно так же свойственно для PHP-FPM, как и для Apache.

    Количество процессов определяет, сколько одновременно может «висеть» запросов в обработке.

    NGINX

    Благодаря этой архитектуре nginx на порядки быстрее обрабатывает запросы, чем любой другой сервер и благодаря ей же потребляет при этом сильно меньше ресурсов. Как это происходит?

    В эту схему отлично вписалась асинхронная работа со статическими файлами. Благодаря тому, что в современном мире с файлами можно работать почти так же асинхронно, как и с backend, Nginx отлично разделяет работу на две части: статику отдает с диска, динамику обрабатывает в PHP-FPM.

    В чем выигрыш?

    У вас на странице 100 картинок+js+css-ок? Значит, большая их часть будет висеть в очереди внутри сервера Apache и ждать, когда пользователь получит предыдущие 35 ответов.

    В случае с Nginx + PHP-FPM важнее всего количество процессов PHP-FPM. Мы можем поставить его таким же равным тридцати пяти. Что это значит? Это значит, что мы можем одновременно обрабатывать 35 запросов к динамике, запросы же к статике nginx разгребет своими силами в количестве 3000+ одновременных почти на любой слабой VPS.

    Расход оперативной памяти при использовании Nginx+PHP-FPM меньше, чем на «голом» Apache, при равном количестве процессов (FPM и Apache). Скорость обработки запросов выше.

    На расход CPU внутри PHP замена Apache на FPM никак не скажется. CPU в первую очередь кушает Ваш PHP-код, а пока его никто не оптимизирует, работать быстрее и экономичнее он не начнет.

    Итог

    Все проблемы PHP (процесс на запрос, не оптимальный код самого проекта) никуда не деваются.

    Появляется возможность перелопачивать тонны запросов за статикой, которой нет в Apache.

    Вы экономите оперативную память, что сказывается на цене оборудования или VPS.

    Появляется море приятного функционала самого Nginx.

    Пропадает возможность использовать htaccess, но честно скажу, конфигурация nginx куда более простая и понятная, чем htaccess.

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    Установка PHP и модулей на Ubuntu/Debian

    В Debian/Ubuntu это делается легко и просто, зачастую не требуется ничего собирать

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    Капризы WebSocket и при чём здесь костыли

    Протокол WebSocket имеет свои преимущества и свои недостатки: детальный разбор

    Curl в PHP

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    Почему timeout для curl в php необходим

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    IoT Highload: особенности и подводные камни

    Особенности серверных приложений, работающих с сетью IoT-устройств на практике и в теории

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    О безопасности, рисках и вложениях

    Как сделать так, чтобы Ваш IT-отдел не стал местом утечки информации, за которую Вы отвечаете?

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    Установка PHP и модулей на Ubuntu/Debian

    В Debian/Ubuntu это делается легко и просто, зачастую не требуется ничего собирать

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    Капризы WebSocket и при чём здесь костыли

    Протокол WebSocket имеет свои преимущества и свои недостатки: детальный разбор

    Curl в PHP

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    Почему timeout для curl в php необходим

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    IoT Highload: особенности и подводные камни

    Особенности серверных приложений, работающих с сетью IoT-устройств на практике и в теории

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    О безопасности, рисках и вложениях

    Как сделать так, чтобы Ваш IT-отдел не стал местом утечки информации, за которую Вы отвечаете?

    Источник

    PHP → Коротко о CGI, FastCGI, PHP-FPM и mod_php

    Решил навести в голове порядок о том, как работают вместе веб-сервер и PHP.

    Common Gateway Interface, «общий интерфейс шлюза» — это стандарт, который описывает, как веб-сервер должен запускать прикладные программы (скрипты), как должен передавать им параметры HTTP-запроса, как программы должны передавать результаты своей работы веб-серверу. Прикладную программу взаимодействующую с веб-сервером по протоколу CGI принято называть шлюзом, хотя более распространено название CGI-скрипт или CGI-программа.

    В качестве CGI-программ могут использоваться программы/скрипты написанные на любых языках программирования, как на компилируемых, так и на скриптовых, в том числе на shell.

    CGI-скрипты были популярны до того, как для веб-разработки стали преимущественно использовать PHP. Хотя сам PHP интерпретатор позволяет работать в режиме CGI (см. ниже).

    Основной момент: «CGI» это не язык программирования и не отдельная программа! Это просто протокол (стандарт, спецификация, соглашение, набор правил).

    FastCGI

    Дальнейшее развитие технологии CGI, является более производительным и безопасным, снимает множество ограничений CGI-программ.

    FastCGI программа работает следующим образом: программа единожды загружается в память в качестве демона (независимо от HTTP-сервера), а затем входит в цикл обработки запросов от HTTP-сервера. Один и тот же процесс обрабатывает несколько различных запросов один за другим, что отличается от работы в CGI-режиме, когда на каждый запрос создается отдельный процесс, «умирающий» после окончания обработки.

    Написание FastCGI программ-демонов сложнее чем CGI, нужны дополнительные библиотеки, зависящие от языка.

    Опять же, сама аббревиатура FastCGI это не язык программирования и не отдельная программа, это как и в случае CGI — просто спецификация.

    PHP в режиме CGI

    PHP в режиме CGI это самый старый способ выполнения php-скриптов веб-сервером. Режим доступен по умолчанию, однако может быть отключён при компиляции.

    Для Apache нужен модуль mod_cgi (поставляется вместе с Apache). Nginx из коробки поддержки не имеет, хотя существуют дополнительные инструменты.

    В данный момент режим используется редко в силу малой производительности.

    PHP в режиме FastCGI

    Помимо CGI режима, PHP из коробки умеет работать и в FastCGI режиме (с версии 5.3 даже в двух FastCGI режимах). Режим включается флагом при компиляции интерпретатора, флаг зависит от версии PHP.

    Для работы с Apache нужен модуль mod_fcgid или mod_fastcgi, либо связка из mod_proxy_fcgi + PHP-FPM.

    Nginx умеет работать с FastCGI приложениями из коробки, но именно для PHP дополнительно нужен PHP-FPM (см. ниже).

    Следует помнить, что при работе PHP в режиме FastCGI в памяти висит сам php интерпретатор, а не какой-то конкретный php-скрипт.

    PHP-FPM

    FastCGI Process Manager, «Менеджер процессов FastCGI». Это альтернативная реализация FastCGI режима в PHP с несколькими дополнительными возможностями, которые обычно используются для высоконагруженных сайтов.

    Изначально PHP-FPM представлял из себя набор патчей от Андрея Нигматулина, которые устраняли ряд проблем, мешающих полноценно использовать PHP в режиме FastCGI (список улучшений). С версии PHP 5.3 набор патчей включён в ядро, а дополнительные возможности PHP-FPM включаются флагом при компиляции.

    PHP-FPM используется в основном в связке с Nginx, без установки Apache.

    mod_php

    Это модуль для Apache, позволяющий ему выполнять php скрипты. Является наверно самым популярным и простым способом подружить Apache и PHP. Модуль не использует ни CGI, ни FastCGI. Есть свои минусы — скрипты работают под пользователем веб-сервера, невозможно использовать больше одной версии PHP.

    Источник

    Установка и базовая настройка nginx и php-fpm для разработки проектов локально в Ubuntu 16.04

    Здравствуй, уважаемый пользователь Хабрахабра. Мое повествование будет о том, как подготовить почву для локальной веб-разработки проектов в операционной системе Ubuntu 16.04.1 LTS.

    В данной статье хочется развеять и разъяснить возможные трудности связанные с установкой и настройкой ПО, которое требуется для современной веб-разработки, с которыми возможно сталкиваются начинающие разработчики и не только.

    Технологии которые будут использованы в статье: nginx, php-fpm.

    Перед началом повествования, хочу отметить, что я проделывал все эти действия на «голой» системе.
    Я буду работать с пакетным менеджером aptitude. Так же рекомендую обновить индекс пакетов и сами пакеты перед установкой ПО. В статье мы проделаем эти действия вместе.

    Установка пакетного менеджера aptitude, обновление индекса и пакетов

    Обновляем пакеты (команда обновит все пакеты, для которых есть новые версии, если потребуется удаление пакетов, то оно будет выполнено).

    Установка и настройка nginx (версия >= 1.10.0)

    Проверяем версию, чтобы убедиться что не установили старую, то есть ниже 1.10.0.

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    Установку и запуск произвели, теперь пойдем в каталог туда куда установлен наш nginx и посмотрим на его структуру. Каталог nginx находится по такому пути:

    Наc интересуют в данный момент два каталога, которые вы видите на скриншоте. Это каталоги sites-available и sites-enabled.

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    Давайте перейдем в каталог sites-available и начнем конфигурировать наш виртуальный хост (сайт).

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

    В случае установки nginx «с нуля», именно «с нуля», так как при удалении nginx командой
    или конфигурационные файлы остаются и если вы вдруг будете не понимать, почему nginx не работает и захотите его переустановить (обычно к такому прибегают начинающие пользователи Linux), то и после переустановки он не будет корректно работать, из-за того что в старых конфигурационных файлах (они не удаляются после удаления командой remove) прописаны неверные настройки, их придется удалить, либо настроить верно, только тогда nginx заработает.

    В этом каталоге будет по умолчанию один файл, с названием default. В нем будет конфигурационный файл с примером, с комментариями, его вы можете изучить на досуге, а можете и вовсе удалить (всегда можно обратиться к официальной документации).

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    Создадим свой конфигурационный файл, который будет соответствовать названию домена нашего локального сайта (или реального, если уже знаете его название). Это удобно, в будущем, когда будет много конфигурационных файлов, то это избавит вас от путаницы в них. У меня этот файл будет называться project.local.

    Посмотрим что получилось.

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    Теперь откроем его в редакторе, я открою его в nano.

    Видим что он у нас пустой. Теперь перейдем к формированию нашего файла. Нужно привести конфигурацию к такому виду, как написано ниже. Я опишу только жизненно важные директивы этого файла, описывать остальное не буду, так как это не является на данный момент важным, все-таки у нас тема базовой настройки. Этих настроек с «горкой» хватит для разработки проектов локально, не только мелких, но и довольно крупных. В следующих статьях опишу отдельно каждые использованные директивы (именно так называются строки, например server_name) этого файла.

    Смотрите комментарии прям в конфигурационном файле.

    Сохраняем файл. Теперь нам надо проверить, нет ли в нем ошибок. Сделать мы это можем командой.

    Если видим такую информацию как на скриншоте, значит у нас все верно, может продолжать настройку. Если вы получаете какие-либо ошибки, стоит перепроверить конфигурационный файл.

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    Теперь нам надо активировать конфигурационный файл, в каталоге /etc/nginx/sites-enabled/ необходимо создать симлинк (символическая ссылка). Если у вас nginx был установлен «с нуля», то в этом каталоге есть симлинк на файл default, про который рассказывалось выше, его можно удалить, если он вам не требуется. Переходим в нужный каталог.

    Посмотрим на наш созданный симлинк.

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    Чтобы убедиться что мы делаем еще все верно опять запустим команду.

    Если все ок, едем дальше.

    Файл hosts

    Этот файл находится по пути /etc/hosts. Наличие в нем записей, позволяет запускать nginx с использованием в качестве домена localhost. В этом файле можно присваивать альтернативные псевдонимы, например для нашего проекта project.local, мы присвоим домен project.local.

    Открываем файл в редакторе nano.

    У вас в этом файле будет и другая информация, просто игнорируйте ее. Вам всего лишь нужно добавить строку как на моем скриншоте.

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    Не забываем сохранить файл. На этом настройка файла hosts закончена.

    Установка php-fpm (>=7.0)

    Проверяем установленную версию, на всякий случай, хотя в Ubuntu 16.04.1 в репозиториях лежит именно 7.0 версия.

    php fpm для чего. Смотреть фото php fpm для чего. Смотреть картинку php fpm для чего. Картинка про php fpm для чего. Фото php fpm для чего

    Убеждаемся что все ок. Стартуем php-fpm.

    Если будете править конфиги, то не забывайте рестартовать демон. Это делает так. Но нам это не потребуется.

    На этом установка и настройка php-fpm закончена. Правда, это все. Это не магия, путь до сокета php-fpm у нас уже был прописан в конфигурационном файле. Конечно, вам могут понадобиться какие-либо расширения php для разработки личных проектов, но их вы можете поставить по мере того как они будут требоваться.

    Теперь пойдем для в каталог с нашим проектом, у меня он лежит по такому пути.

    Поднимемся на каталог выше и сделаем права 777 (то есть мы будем делать полные права каталогу с нашим проектом project.local). В будущем это избавим нас от лишних проблем.

    На этом настройка ПО завершена, давайте создадим тестовый файл в нашем рабочем каталоге project.local и убедимся что все работает. Я создам файл index.php с таким содержанием.

    Идем в браузер и видим что у нас все прекрасно работает! Интерпретатор php в том числе.

    Источник

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *