在 Bitnami LAMP 堆栈中设置和访问 PHP-FPM 状态页面

4
我希望在Bitnami LAMP堆栈系统上查看PHP-FPM状态页面。
然而,当我尝试时,要么得到一个空白页面,要么得到一个错误提示:
Request exceeded the limit of 10 internal redirects due to probable configuration error.

那么,为了使其正常工作,我需要做什么?
1个回答

9

这个问题有两个部分。

首先,您需要在PHP-FPM配置中启用状态页处理程序,然后设置Apache将给定的URL路由到该处理程序。

设置PHP-FPM:

cd /path/to/bitnami
cd php/etc
sudo nano php-fpm.conf

(或者您喜欢使用的编辑器命令。如果您安装的是bitnami而不是使用Bitnami AMI,它将使此文件具有根所有权,则可能不需要sudo。)

在文件中找到以下行:

;pm.status_path = /status    

并将其更改为:

pm.status_path = /php_fpm_status

请保存文件。(在nano中,按下CTRL-X,然后按Y确认) 然后在Apache中设置处理程序: 找到要为其提供状态页面的域的Apache配置。默认情况下,我认为该文件类似于/path/to/bitnami/apache2/conf/bitnami/bitnami.conf,但如果您有带虚拟主机的实时服务器,则可能已更改。
在配置中,您需要添加:
<VirtualHost xxx>
  ...
  <LocationMatch "/php_fpm_status">
    SetHandler "proxy:fcgi://www-fpm"
  </LocationMatch>
  ...
</VirtualHost>

重新启动:

sudo /path/to/bitnami/ctlscript.sh restart

然后在浏览器中打开您的新位置或使用curl命令:

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锁定足以实现这个基本示例)
祝使用愉快!如果有更好的方法,请分享您的智慧 :-)

感谢您提供的指导。它们让我有了一个好的开始,但是我卡在如何为特定应用程序启用它上了。例如,我的Magento应用程序文件中有<IfDefine USE_PHP_FPM> <FilesMatch \.php$> SetHandler "proxy:fcgi://magento-fpm" </FilesMatch> </IfDefine> 但是将<LocationMatch "/php_fpm_status"> SetHandler "proxy:fcgi://magento-fpm" </LocationMatch>添加到我的域名的<VirtualHost *.443>部分会返回404错误。Magento特定配置中有一些东西不允许处理此路径。请指导。 - Shrenik
明白了。如果我们需要启用特定池的状态监控,请添加以下内容。例如,对于Magento Bitnami堆栈,请在htaccess.conf中的<Directory "/opt/bitnami/apps/magento/htdocs">部分添加RewriteCond %{REQUEST_URI} !^/(mag_fpm_status)来绕过对index.php的重写,然后在</Directory>闭合标签后或文件末尾添加<Location "/mag_fpm_status"> SetHandler "proxy:fcgi://magento-fpm" </Location>。SetHandler应与/opt/bitnami/apps/magento/conf/http-app.conf中的设置相匹配。在浏览器中访问<domain>/mag_fpm_status?full&html - Shrenik
别忘了在提供的目录的.htaccess文件中设置mod_rewrite规则!在我的情况下,我同时运行着一个WordPress网站,所以我必须排除特定的路径。详细信息请参考此页面:https://dev59.com/J3I-5IYBdhLWcg3wc3-w - StrangeCode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接