【问题标题】:Set up and access the PHP-FPM status page in Bitnami LAMP stack在 Bitnami LAMP 堆栈中设置和访问 PHP-FPM 状态页面
【发布时间】:2016-09-18 23:14:08
【问题描述】:

我想在 Bitnami LAMP 堆栈系统上查看 PHP-FPM 状态页面。

但是,当我尝试时,我得到一个空白页,或者错误提示:

Request exceeded the limit of 10 internal redirects due to probable configuration error.

那么我需要做什么才能让它工作呢?

【问题讨论】:

    标签: php linux apache lamp


    【解决方案1】:

    这个答案有两个部分。

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

    设置 PHP-FPM:

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

    (或使用您最喜欢的编辑器的任何命令。此外,如果您已将 bitnami 安装为当前用户,而不是使用 Bitnami AMI,则可能不需要 sudo,这会保留此文件的 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,但如果您有一个带有虚拟主机的实时服务器,您可能已经更改了它。

    在你需要添加的配置中:

    <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 锁定就足够了)

    享受吧!如果有更好的方法来做到这一点,那么请分享智慧:-)

    【讨论】:

    • 感谢上述说明。他们让我开始了,但我坚持如何为特定应用程序启用它。例如,我的 magento 应用程序文件有 &lt;IfDefine USE_PHP_FPM&gt; &lt;FilesMatch \.php$&gt; SetHandler "proxy:fcgi://magento-fpm" &lt;/FilesMatch&gt; &lt;/IfDefine&gt; ,但将 &lt;LocationMatch "/php_fpm_status"&gt; SetHandler "proxy:fcgi://magento-fpm" &lt;/LocationMatch&gt; 添加到我的域的 部分会返回 404。Magento 特定配置中的某些内容不允许处理此路径。请指导。
    • 知道了。如果我们必须启用特定于池的状态监控,请添加以下内容。例如,对于 magento bitnami 堆栈,将 htaccess.conf 添加到 &lt;Directory "/opt/bitnami/apps/magento/htdocs"&gt; 部分 RewriteCond %{REQUEST_URI} !^/(mag_fpm_status) 以绕过对 index.php 的重写,然后在 &lt;/Directory&gt; 结束标记之后或文件末尾添加 &lt;Location "/mag_fpm_status"&gt; SetHandler "proxy:fcgi://magento-fpm" &lt;/Location&gt; 。 Sethandler 应该与 /opt/bitnami/apps/magento/conf/http-app.conf 匹配。在浏览器中访问&lt;domain&gt;/mag_fpm_status?full&amp;html
    • 别忘了在服务目录的.htaccess 中设置mod_rewrite 规则!就我而言,我有一个 Wordpress 站点同时运行,所以我不得不排除特定路径。详情参考本页:stackoverflow.com/questions/1848500/…
    猜你喜欢
    • 1970-01-01
    • 2017-01-01
    • 2021-05-16
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 2012-01-20
    • 2023-03-17
    • 2019-09-04
    相关资源
    最近更新 更多