+7 707 858 58 37
help@vpsadm.ru
Разница между режимами, PHP-FPM, CGI, FastCGI, модуль Apache

Часто приходится объяснять клиентам что за режимы работы PHP для сайтов.  Знаете, в настройках той же панельки ISPmanager Lite 5 имееются такие.   И еще люди говорят — вот, там же PHP 7 — а ты впариваешь свой php-fpm, который только версии 5.4 или 5.6.  И они не понимают, что режим работы гораздо важнее для производительности, чем просто версия PHP.

Я выдернул свой этот пост с форума webmasters, где когда-то давно расписывал за режимы.   Немного дополнил его скринами, о том как включить режимы в панели ISPmanager Lite 5

PHP 7  в режиме CGI

На самом деле в режиме CGI  php 7 теряет все свои преимущества, потому что CGI это в разы менее производительный режим работы PHP.  Чтобы иметь преимущества php 7 его нужно обновить общесистемный. Тогда и высокопроизводительный сервис PHP-fpm станет работать на этой же версии.  Но чего делать пока не рекомендуется, да и нету его еще в стабильных репозиториях большинства OS. Вкорячить можно, но откатить  потом будет гораздо сложней, если что-то отвалится.

Режимы работы PHP-CGI  и модуль Apache

Fastcgi в принципе то же самое что и php-fpm, но есть существенная разница. CGI — тоже оно, но не совсем. Давайте начнём с CGI и чем он отличается от обычного Apache по-умолчанию. Апач с mod_php исполняет php-код сам, отъедая при этом кучу ресурсов и делая это внутри своих процессов.

Когда используется режим CGI — это значит апач не обрабатывает php сам, а запускает php-cgi для каждого php-скрипта и забирает у него результат обработки.
Т.е по сути это даже несколько усложняет схему: пользователь шлёт запрос к nginx > тот обращается к apache > апач запускает скрипты через cgi и получает результат их выполнения > собирает из них html и отдаёт его nginx > тот собирает всю статику, нужную для этой html страницы в кучу > отдает пользователю.

Режим fastcgi

Fastcgi это тот же cgi, но отличается от него тем, что оно позволяет апачу не запускать для каждого скрипта отдельный процесс, а запустить один или несколько процессов и отдавать скрипты ему, получать от него ответ. Это немного производительнее, чем cgi, засчёт того, что операции создания процессов для ОС считаются довольно ресурсоемкими. Но в этой схеме всё тот же apache. fastcgi без апача в данном случае работать не может, это все равно модуль mod_fastcgi.

PHP-fpm  — или как он указывается в ISPmanager —  Nginx+PHP-FPM

php-fpm — это fastcgi process manager. Он представляет из себя отдельную службу, которая работает независимо от какого-либо вебсервера. Он может сам принимать запросы от вебсервера через unix-сокет или через сетевое соединение. Другими словами, вы можете держать сайты на одном сервере, а php-скрипты исполнять на другом.

И в этом случае, апач становится не нужен, потому как nginx может работать с php-fpm сам, напрямую. Апач тоже может работать в таком же режиме с php-fpm, но это не имеет смысла. php-fpm не может отдавать статические файлы или html, он может только исполнять php. получается такая схема: запрос пользователя > nginx > php-fpm >nginx, он собирает из ответа php и статики страницу > отдаёт пользователю. FPM в разы производительнее apache, в каком бы режиме тот ни был запущен.

Настройка в ISPmanager

Теперь, что касается ISP. Тот режим, о котором я говорю — nginx+php-fpm — доступен только в ISP manager 5-й версии.

Сначала нужно включить и установить нужный софт через «Возможности»

Примерно вот так выглядят настройки в этом режиме.

 

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

rezhimy-ispmanager-user

И только теперь эти режимы станут доступны для сайта этого пользователя:

 

rezhim-raboty-saita-ispmanager
Вкратце о различиях режимов работы панели также можете посмотреть в документации ISP.

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

В ISP 4 этого режима вообще нет, поэтому там можно настроить это только вручную, без ISP, и то, если будете после этого вносить изменения в конфиги сайтов через панель, все настройки слетят к ISP-шным, т.е на апач.

Отправить ответ

Notify of
avatar
seoonly.ru
Гость

Спасибо-) Теперь я в теме

Андрей
Гость

Есть сайты на DLE (тубы), которые почему-то работают ТОЛЬКО в режиме апач. Хоть и стоит кэширование и проч., они ложат апач — [error] server reached MaxClients setting, consider raising the MaxClients setting (c максклиентом уже игрались не помогло) и соответственно весь сервер лежит(
DLE можно подружить с другими режимами?

WebPromote.ru
Гость

Годный пост. На сервере держу пока старую сборку с апачем, а вот на локалке поставил без него. Пока еще не юзал толком. Как я понял .htaceess в этой связке не работает? ЧПУ как здесь делать или все там так же работает?

Саша
Гость

«Чтобы иметь преимущества php 7 его нужно обновить общесистемный. Тогда и высокопроизводительный сервис PHP-fpm станет работать на этой же версии. Но чего делать пока не рекомендуется, да и нету его еще в стабильных репозиториях большинства OS.»

Спасибо за эту статью и видео! Видео кстати также будет полезно тем, кто интересуется темой «как надо работать в терминале» )

Вопросики:
1. Если хочется php7, то на чистую ОС (как я понял сейчас мейнстрим CentOS для обычных сайтиков) сначала ставим из репозитариев php 5.5 (актуально на 06.2017) и потом еще ставим из не официальных репозитариев php7 ?
2. Или все-же на продакшн 5-ый ставят? )
3. Если Ставим Nginx то получается что apache можно вовсе не ставить…

P.S. Php7 сам по себе должен быть быстрее 5-го, т.к. в нем обновлен движок Zend и выброшено много устаревшего

wpDiscuz