【问题标题】:PHP-FPM, Monit, ping/status pages, ApachePHP-FPM、Monit、ping/状态页面、Apache
【发布时间】:2012-01-20 13:36:36
【问题描述】:

我正在尝试使用 Monit 监视我的 FPM 守护程序,并且由于重生和 PID 更改,我假设以下不是最佳技术?

check process php5-fpm with pidfile "/var/run/php5-fpm.pid"
    start = "/etc/init.d/php5-fpm start"
    stop = "/etc/init.d/php5-fpm stop"
    if failed port 80 protocol http then restart

据我所知,更好的方法是使用 FPM ping URL,只是我无法使用 Apache 激活这些。

除了设置 FPM 池选项之外,在 Apache/PHP-FPM 中究竟需要做什么:

pm.status_path = /status ping.path = /ping

我希望可以让我简单地去:

http://mydomain.com/status

拉起状态页面。当我转到此 URL 时,我收到 404 错误。我假设我需要某种处理程序来将 /status 和 /ping 重定向到本地端口 9000 上的 FPM 服务器。我该怎么做?

【问题讨论】:

    标签: linux apache monit php


    【解决方案1】:

    我在这里发布了与 Bitnami LAMP 堆栈相关的完整问答:

    Set up and access the PHP-FPM status page in Bitnami LAMP stack

    那里的详细信息也应适用于您的设置,但您可能需要将 Apache 配置更改为:

    <LocationMatch "/php_fpm_status">
      SetHandler php5-fpm
    </LocationMatch>
    

    在基本术语中,处理程序首先应该匹配您用来将文件发送到 PHP-FPM 的任何名称。使用 bitnami 时,相关的 conf 设置如下所示:

    <IfDefine USE_PHP_FPM>
      <Proxy "unix:/path/to/bitnami/php/var/run/www.sock|fcgi://www-fpm" timeout=300>
      </Proxy>
      <FilesMatch \.php$>
        SetHandler "proxy:fcgi://www-fpm"
      </FilesMatch>
    </IfDefine>
    

    所以,对于这个设置,我们使用:

    <LocationMatch "/php_fpm_status">
      SetHandler "proxy:fcgi://www-fpm"
    </LocationMatch>
    

    但是对于任何其他安装,请查看您一般用于 PHP-FPM 的内容,然后在为您的状态页面设置处理程序时复制它。

    【讨论】:

      【解决方案2】:

      这个线程也帮助了我......正在获得白色的“空白”PHP页面。

      在我的 /etc/nginx/fastcgi_params 添加了这个

      fastcgi_param PATH_TRANSLATED   $document_root$fastcgi_script_name;

      工作就像一个魅力

      【讨论】:

      • 我尝试了多个fastcgi_param 变体。 PATH_TRANSLATED 不是其中之一,但 REQUEST_URI、SCRIPT_FILENAME 是。
      【解决方案3】:

      您需要在 apache (000-default???) 中设置默认 vhost 来处理 /status 和 /ping。我使用 nginx(道歉,但根据需要进行调整)并且我的 default 文件具有以下位置指令:

      location ~ ^/(status|ping)$ {
          include fastcgi_params;
          fastcgi_pass 127.0.0.1:9000;
          fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
          allow 127.0.0.1;
          deny all;
      }
      

      然后我可以curl localhost/status。

      您还需要更改您的 php-fpm conf(我的是 www.conf)并取消注释这些行:

      pm.status_path = /status
      ping.path = /ping
      

      【讨论】:

        猜你喜欢
        • 2017-01-01
        • 2017-07-30
        • 2014-11-06
        • 1970-01-01
        • 2016-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多