Using supervisord for Nginx+FastCGI+PHP
I was having problems with spawn-fcgi-standalone occasionally resulting in dead PHP processes, which caused 502 Bad Gateway errors on my site. Crontabbing an /etc/init.d/init-fastcgi start
didn’t help much, so I looked for other ways to do it. Supervisord looked promising.
Here’s how to get Supervisord:
apt-get install python-setuptools easy_install supervisor
Here’s what to add to /etc/supervisord.conf:
[fcgi-program:php5-cgi] socket=tcp://127.0.0.1:9000 command=/usr/bin/php5-cgi numprocs=5 priority=999 process_name=%(program_name)s_%(process_num)02d user=www-data autorestart=true autostart=true startsecs=1 startretries=3 stopsignal=QUIT stopwaitsecs=10 redirect_stderr=true stdout_logfile=/var/log/php5-cgi.log stdout_logfile_maxbytes=10MB
So far, so good. When I kill the php process, supervisord starts it back up. Progress!
supervisord doesn’t come with an init.d script, but you can get one for Ubuntu.