Настройте страницу статуса php-fpm с помощью php7 и apache

Я пытаюсь настроить и получить статистику php-fpm с помощью http-звонка. Я знаю, что можно использовать статус сервиса команда, но я хотел бы получить это из моего браузера.

Я использую php7 и apache, и это то, что я сделал в своей конфигурации сервера.

на стороне Apache я создаю vhost с этим:

<LocationMatch "/fpm-status">
Order Allow,Deny
Allow from 127.0.0.1
ProxyPass fcgi://127.0.0.1:9000
</LocationMatch>

В конфигурации php pool (/etc/php/7.0/fpm/pool.d/www.conf) У меня есть это :

[www]
user = www-data
group = www-data
listen = 127.0.0.1:9000
listen.owner = www-data
listen.group = www-data

pm = ondemand

pm.max_children = 1000

pm.start_servers = 150
pm.min_spare_servers = 50
pm.max_spare_servers = 400
pm.max_requests = 200
pm.process_idle_timeout = 5s
pm.status_path = /fpm-status

но после перезапуска apache и php-fpm процесс, когда я пытаюсь с curl, я получаю этот вывод:

admin@ip-10-3-23-78:~$curl http://localhost/fpm-status
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /fpm-status
on this server.<br />
</p>
</body></html>
admin@ip-10-3-23-78:~$

И в файле журнала Apache у меня есть это:

==> /var/log/apache2/error.log <==
[Thu Aug 25 13:36:10.776665 2016] [access_compat:error] [pid 12608] [client ::1:23142] AH01797: client denied by server configuration: proxy:fcgi://127.0.0.1:9000

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

3

Решение

Я перенес ту же проблему и потратил несколько часов, чтобы решить ее для наших установок. К сожалению, я не могу ответить на все вопросы, которые вы задали там, это в основном рабочее решение для плитки «Настройка страницы состояния php-fpm с php7 и apache»

Вот и мы (Ubuntu 16.04):

Шаг 1: что нужно
Просто проверьте, если вы установили этот материал аналогично:

apt-get -y install apache2
apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.0
a2enmod actions fastcgi alias
systemctl restart apache2.service

Шаг 2: Настройка fastcgi
В /etc/apache2/mods-available/fastcgi.conf (или аналогичном) поместите следующее:

<IfModule mod_fastcgi.c>
# Define a named handler
AddHandler php7-fcgi .php
# Generate an alias pointing to /usr/lib/cgi-bin/php[VersionNumber]-fcgi
Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
# Configure an external server handling your upcoming requests (note where the alias is pointing towards)
FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization

# only on if fpm-status is match. You might want to put this into your concrete vhost.conf file. For the testing, fastcgi.conf should work.
<LocationMatch "/fpm-status">
# set the before defined handler here
SetHandler php7-fcgi
# use the handler for the action handling virtual requests
Action php7-fcgi /php7-fcgi virtual
</LocationMatch>
</IfModule>

Шаг 3: Проверьте ваш /etc/php/7.0/fpm/pool.d/www.conf
Убедитесь, что раскомментируйте путь состояния:

pm.status_path = /fpm-status

Шаг 4. Защитите страницу (необязательно)
Прежде чем приступить к производству, безусловно, стоит как-то это обезопасить, например:

 Order deny,allow
Deny from all
Allow from [Some-IP]

Надеюсь, это поможет, ура.

3

Другие решения

Если вы запускаете другие веб-приложения на вашем apache-сервере, вполне вероятно, что одно из них поставляется с .htaccess файл, который мешает обработке /staus страница (или как вы назвали страницу в конфигурации пула php-fpm).

Я недавно столкнулся с этим с экземпляром nextcloud. В конфигурации следующего cloud- (apache) -белого списка URL-адреса и отключении .htaccessпереопределения для этого пути (RewriteEngine Off) сделал страницу доступной в моем случае.
Обязательно замените путь к сокету на правильный путь (это стандартный пример Ubuntu 16.04).

<FilesMatch "^ping|status$">
RewriteEngine Off
SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"</FilesMatch>

Путь сокета определен в
/etc/php/7.2/fpm/pool.d/www.conf (listen = /run/php/php7.2-fpm.sock) в версии по умолчанию Ubuntu.

2

Если вы получаете ошибку разрешений, попробуйте добавить

listen.mode = 0666

в /etc/php/7.0/fpm/pool.d/www.conf

Это было необходимо для правильной работы всего стека fastcgi с php-fpm, хотя я все еще не могу просмотреть страницу состояния и получаю сообщение об ошибке 404 при попытке.

0
По вопросам рекламы [email protected]