Режимы работы PHP на VPS
PHP — это скриптовый язык программирования. Он используется для создания сайтов и поддерживается на большинстве серверов. PHP может взаимодействовать с веб-сервером в разных режимах:
- mod_php — дополнительный модуль Apache, который работает как часть веб-сервера;
- Fast CGI — может взаимодействовать с Nginx или Apache. Также работает со связкой Nginx+Apache;
- PHP FPM — альтернатива FastCGI, которая может взаимодействовать с Nginx.
О принципах работы каждого из режимов расскажем ниже.
Как работает mod_php
mod_php — это модуль Apache. Он обрабатывает все PHP-скрипты самостоятельно, не прибегая к другим модулям. Благодаря этому запросы выполняются быстрее. Также mod_php позволяет вводить переменные PHP в файле .htaccess. Этот модуль подходит для сайтов, на которых нужно обрабатывать преимущественно динамические данные.
mod_php имеет следующие недостатки:
- всем пользователям нужно выдавать права веб-сервера: без прав невозможно внести изменения на сервере;
- низкий уровень безопасности: невозможно определить пользователя, который запустил какой-либо процесс, так как все процессы выполняются под именем apache;
- медленно обрабатываются статические данные;
- ошибки в скриптах могут помешать работе всего сервера.
Как работает PHP CGI и FastCGI
CGI — это стандарт, который определяет, как веб-сервер должен взаимодействовать со скриптами. Используется редко, так как считается устаревшим.
FastCGI — это стандарт, который создан на базе CGI. Он определяет, как веб-сервер должен взаимодействовать со скриптом.
Принципы работы FastCGI:
- скрипт загружается в память один раз, а затем он попадает в цикл обработки запросов от HTTP-сервера;
- процесс-скрипт обрабатывает запросы по одному, в порядке очереди.
FastCGI одинаково работает со статическими и динамическими данными. Также он имеет следующие преимущества:
- каждый скрипт запускается от имени отдельного пользователя. Если запустить небезопасный PHP-скрипт, он не повлияет на файлы других пользователей сервера;
- пользователь имеет все права на выполнение скриптов в пределах своего WWW-домена;
- каждый пользователь сервера может выбирать версию PHP;
- сервер не останавливается, если в скрипте есть ошибка;
- можно вносить переменные в файл .htaccess.
FastCGI имеет два недостатка:
- меньшая производительность (если сравнивать с mod_php),
- медленная обработка статических данных (если нет связки с Nginx).
Как работает PHP FPM
FPM создан как альтернативная версия FastCGI. Это единственный модуль, который подходит для чистого Nginx.
Основные преимущества FPM:
- нет необходимости в веб-сервере Apache,
- низкое потребление оперативной памяти,
- быстрая обработка статических данных благодаря совместимости с Nginx.
Единственный недостаток PHP FPM — это отсутствие поддержки файла .htaccess. Из-за этого нужно настраивать правила на стороне Nginx.