Я бы хотел увидеть страницу статуса PHP-FPM в системе стека Bitnami LAMP.
Однако, когда я пытаюсь, я получаю пустую страницу или ошибку:
Request exceeded the limit of 10 internal redirects due to probable configuration error.
Итак, что мне нужно сделать, чтобы заставить его работать?
На этот ответ есть две части.
Во-первых, вам нужно включить обработчик страницы состояния в конфигурации PHP-FPM, а затем вам нужно настроить Apache для маршрутизации заданного URL-адреса до этого обработчика.
Чтобы настроить PHP-FPM:
cd /path/to/bitnami cd php/etc sudo nano php-fpm.conf
(Или любую команду для использования вашего любимого редактора. Кроме того, вам может не понадобиться sudo, если вы установили bitnami в качестве текущего пользователя вместо использования AMI Bitnami, который оставляет этот файл с правами root.)
В файле найдите строку
;pm.status_path = /status
И измените его на:
pm.status_path = /php_fpm_status
Сохраните файл. (В nano, CTRL-X
, затем Y
для подтверждения)
Затем настройте обработчик в Apache:
Найдите конфигурацию Apache для домена, который вы хотите обслуживать на странице состояния. По умолчанию я думаю, что файл – это что-то вроде /path/to/bitnami/apache2/conf/bitnami/bitnami.conf
но вы, вероятно, изменили его, если у вас есть живой сервер с vhosts.
В конфигурации вам нужно добавить:
<VirtualHost xxx> ... <LocationMatch "/php_fpm_status"> SetHandler "proxy:fcgi://www-fpm" </LocationMatch> ... </VirtualHost>
Перезапустить вещи:
sudo /path/to/bitnami/ctlscript.sh restart
Затем откройте новое местоположение в веб-браузере или закрутите его:
curl ip.add.re.ss/php_fpm_status
И вы должны увидеть статус PHP-FPM, что-то вроде:
pool: www process manager: ondemand start time: 21/May/2016:20:28:57 +0000 start since: 13 accepted conn: 1 listen queue: 0 max listen queue: 0 listen queue len: 0 idle processes: 0 active processes: 1 total processes: 1 max active processes: 1 max children reached: 0 slow requests: 0
Пока все хорошо, но любой человек и его злонамеренная обезьяна теперь могут просматривать ваш статус FPM, поэтому блокирует его по IP-адресу.
Вы можете использовать любой IP-адрес (например, ваш персональный IP-адрес), следуя приведенному ниже формату. На Amazon EC2 мы также можем ограничить запрос только теми, которые происходят из собственного частного IP-адреса сервера (а не для общедоступного EIP). Так что если частный IP 10.0.0.1:
<VirtualHost xxx> ... <LocationMatch "/php_fpm_status"> Require ip 10.0.0.1 SetHandler "proxy:fcgi://www-fpm" </LocationMatch> ... </VirtualHost>
Перезапустите Apache, и вы все равно сможете получить доступ к статусу через командную строку, используя curl 10.0.0.1/php_fpm_status
но любой удаленный запрос на URL-адрес даст 403 Forbidden
ответ.
(Вы также можете защитить паролем страницу или делать другие интересные вещи, но для этого базового примера достаточно блокировки IP)
Наслаждайтесь! И если есть лучший способ сделать это, то, пожалуйста, поделитесь мудростью 🙂