Назад | Перейти на главную страницу

Почему скрипт-оболочка php-cgi для php-fpm? (Используя virtualhost и suexec.)

Я просто настраиваю свой сервер с Apache, FastCGI и PHP-FPM. Мой вопрос касается папки / cgi-bin /: действительно ли необходимо иметь оболочку / cgi-bin / php-fpm для каждого отдельного виртуального хоста, который запускает apache с использованием другого пользователя / группы? Более того, если пользователь удаляет папку cgi-bin ... преимущества fpm / fastcgi теряются. В идеале я бы хотел настроить PHP-FPM без необходимости чего-либо, кроме файла .conf.

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

Соответствующие файлы / результаты, связанные с моим вопросом:

/etc/apache2/modules.d/20_mod_fpm.conf
---------------------------------------------------------------------------------
...

FastCgiExternalServer /var/www/localhost/cgi-bin/php-fpm -host 127.0.0.1:9000

AddHandler php-fpm .php
Action php-fpm /cgi-bin/php-fpm

DirectoryIndex index.php

...
/ var / www / localhost / cgi-bin / php-fpm
---------------------------------------------------------------------------------
#!/usr/bin/php-cgi
phpinfo ()
---------------------------------------------------------------------------------
...
Server API: FPM/FastCGI
...

Прекрасно. Выполнение тестов сообщает, что установка действительно работает очень хорошо: с ~ 135 запросами в секунду, а не с 13 запросами в секунду с использованием настройки интерпретатора Apache / PHP по умолчанию. Так что все, что осталось, - это сделать многопользовательский аспект безупречным.

Например, на машинах Redhat / centos php-fpm фактически является двоичным файлом в каталоге / usr / sbin /. Он перехватывает вызов с сервера (apache / nginx) для обработки запросов php. Настройки php-fpm можно изменить в php-fpm.conf (http://php-fpm.org/wiki/Configuration_File), который позволяет точно настроить вашу систему. php-fpm довольно продвинутый и дает вам большой контроль над вашей системой.

Почему-то файл php-fpm в вашей системе больше похож на обычную оболочку fastcgi / cgi. Если вы хотите обойтись без использования «вашей версии php-fpm» и напрямую использовать php-cgi, вы можете использовать настраиваемую оболочку fastcgi. Пример пользовательской оболочки fastcgi:

#!/bin/bash
### Set PATH ###
PHP_CGI=/usr/bin/php-cgi
PHP_FCGI_MAX_REQUESTS=1000
export PHP_FCGI_MAX_REQUESTS
exec $PHP_CGI

Одна из опций, которые можно установить в php-fpm.conf, - это позволить вам выполнять скрипты php от имени другого пользователя. Suexec также предоставляет эту функцию, и ее может вызвать Apache для передачи запроса в оболочку fastcgi, которая будет обрабатывать файлы php. Вместе suexec + fastcgi обеспечивают некоторые ключевые функции php-fpm и, следовательно, могут использоваться в качестве альтернативы.

Использование оболочки позволяет при желании выполнить дополнительную настройку, такую ​​как установка переменных среды, выбор файла php.ini и т. Д.