No meu servidor eu uso nginx + fcgi também.
Minha solução não é infalível, mas pelo menos funciona. Eu tenho esse script que usa spawn-fcgi e php5-cgi em /etc/init.d /
#!/bin/bash
PHP_SCRIPT='/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -f /usr/bin/php5-cgi'
RETVAL=0
case "$1" in
start)
$PHP_SCRIPT
RETVAL=$?
;;
stop)
killall -9 php5-cgi
RETVAL=$?
;;
restart)
killall -9 php5-cgi
$PHP_SCRIPT
RETVAL=$?
;;
*)
echo "Usage: php-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
e o nginx conf relacionado é este:
server {
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi.conf;
fastcgi_param SCRIPT_FILENAME /var/www/hyperblasted/$fastcgi_script_name;
}
...
}
e o fastcgi.conf contém o seguinte
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
Espero que isso ajude:)
PS: Com essa configuração eu tive um problema em que o daemon cgi morreria de vez em quando. Eu trabalhei em torno deste problema, executando isso em um cronjob a cada 5 minutos:
if ps aux | grep 'php5-cgi' | grep -v grep > /dev/null ; then
echo "PHP-cgi is runnning !"
else
echo "PHP-cgi is down. Starting over..."
/etc/init.d/php-fcgi start
fi