Я пытаюсь настроить и получить статистику 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)?
Как правильно настроить страницу и сделать ее доступной из браузера?
Я перенес ту же проблему и потратил несколько часов, чтобы решить ее для наших установок. К сожалению, я не могу ответить на все вопросы, которые вы задали там, это в основном рабочее решение для плитки «Настройка страницы состояния 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]
Надеюсь, это поможет, ура.
Если вы запускаете другие веб-приложения на вашем 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.
Если вы получаете ошибку разрешений, попробуйте добавить
listen.mode = 0666
в /etc/php/7.0/fpm/pool.d/www.conf
Это было необходимо для правильной работы всего стека fastcgi с php-fpm, хотя я все еще не могу просмотреть страницу состояния и получаю сообщение об ошибке 404 при попытке.