系统:在 Ubuntu 14.04 上运行的 LEMP
我正在尝试配置工具 Monit,以便在出现问题时重新启动 Nginx 或 PHP-FPM。它正确地监控了 Nginx,但在 PHP-FPM 的状态下,它显示“未监控”。显然,我让它检查了错误的位置。
下面是在套接字上运行的 PHP-FPM 的 Nginx 配置:
location ~ \.php$ { ## Execute PHP scripts
if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss
expires off; ## Do not cache dynamic content
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params; ## See /etc/nginx/fastcgi_params
fastcgi_keep_conn on; #hhvm param
}
以下是我对 Nginx 和 PHP-FPM 的 Monit 配置:
## Check Nginx
check process nginx with pidfile /var/run/nginx.pid
start program = "/etc/init.d/nginx start"
stop program = "/etc/init.d/nginx stop"
## Check PHP-FPM
check process php-fpm with pidfile /var/run/php-fpm/php-fpm.pid
group www-data #change accordingly
start program = "/etc/init.d/php5-fpm start"
stop program = "/etc/init.d/php5-fpm stop"
if failed unixsocket /var/run/php-fpm/php-fpm.sock then restart
if 3 restarts within 5 cycles then timeout
尽管总是使用“service php5-fpm restart”重新启动,我还是遵循了建议的启动和停止建议。
根据 /etc/php5/fpm/pool.d/www.conf,我的组是“group = www-data”。我检查了我的 php-fpm.conf,发现 PID 文件正在 /var/run/php5-fpm.pid 中创建,所以我更改了它。然后 Monit 显示“正在初始化”,然后是“连接失败”。有什么建议吗?
答案1
这是我长期使用的配置,效果很好
check process php5-fpm with pidfile /var/run/php5-fpm.pid
group phpcgi
if not exist for 2 cycles then restart
start program = "/usr/sbin/service php5-fpm start"
stop program = "/usr/sbin/service php5-fpm stop"
if not exist for 2 cycles then restart
if failed unixsocket /var/run/php5-fpm.sock then restart
if 5 restarts within 5 cycles then timeout
答案2
好的,我自己解决了。有很多问题。“php5”需要替换几乎所有“php”实例。我收到的坏连接是指 unixsocket,所以我必须更新它。此外,新的 PID 位置也发生了变化,看起来像是使用 PHP5-FPM。这是最终配置。
## Check PHP-FPM
check process php5-fpm with pidfile /var/run/php5-fpm.pid
group www-data #change accordingly
start program = "/etc/init.d/php5-fpm start"
stop program = "/etc/init.d/php5-fpm stop"
if failed unixsocket /var/run/php5-fpm.sock then restart
if 3 restarts within 5 cycles then timeout