I read this article on php-fpm init script but it didn’t have one.

You can use the php-fpm init.d script below. You need to change the variables at the start for your bin, conf, and pid to suit your set up.  PHP-FPM works great with Nginx.

Not sure if WordPress will format this script right so you can get as a text file here:

http://images.honewatson.com/random_files/php-fpm.txt

#! /bin/sh

php_fpm_BIN=/usr/local/bin/php-cgi
php_fpm_CONF=/usr/local/etc/php-fpm.conf
php_fpm_PID=/usr/local/logs/php-fpm.pid

php_opts="--fpm-config $php_fpm_CONF"

wait_for_pid () {
try=0

while test $try -lt 35 ; do

case "$1" in
'created')
if [ -f "$2" ] ; then
try=''
break
fi
;;

'removed')
if [ ! -f "$2" ] ; then
try=''
break
fi
;;
esac

echo -n .
try=`expr $try + 1`
sleep 1

done

}

case "$1" in
start)
echo -n "Starting php_fpm "

$php_fpm_BIN --fpm $php_opts

if [ "$?" != 0 ] ; then
echo " failed"
exit 1
fi

wait_for_pid created $php_fpm_PID

if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;

stop)
echo -n "Shutting down php_fpm "

if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi

kill -TERM `cat $php_fpm_PID`

wait_for_pid removed $php_fpm_PID

if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;

quit)
echo -n "Gracefully shutting down php_fpm "

if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi

kill -QUIT `cat $php_fpm_PID`

wait_for_pid removed $php_fpm_PID

if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;

restart)
$0 stop
$0 start
;;

reload)

echo -n "Reload service php-fpm "

if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi

kill -USR2 `cat $php_fpm_PID`

echo " done"
;;

logrotate)

echo -n "Re-opening php-fpm log file "

if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi

kill -USR1 `cat $php_fpm_PID`

echo " done"
;;

*)
echo "Usage: $0 {start|stop|quit|restart|reload|logrotate}"
exit 1
;;

esac

2 Comments

  1. Thanks dude! came in handy.

  2. Hi! Many thanks for this post, very useful info.
    I have a couple of questions I hope you can help with:

    1) With your script all seems to work fine, but after a while my web application has been in idle, PHP-FPM somehow shuts down and I have to start it manually for PHP pages to work again, otherwise all what I get is “502/bad gateway” with Nginx.
    Any suggestions?

    2) I found another script, which I paste below, from http://www.johnyerhot.com/2008/02/12/how-to-nginx-fcgi-php-mysql-ruby-on-rails-rewrite-vhosts/.
    If I use this script it works the same, but I read fastcgi in there while in your script I read cgi. What is the actual difference?

    Thanks!

    #!/bin/bash
    PHP_SCRIPT=/usr/bin/php-fastcgi
    RETVAL=0
    case $13 in
    start)
    $PHP_SCRIPT
    RETVAL=$?
    ;;
    stop)
    killall -9 php
    RETVAL=$?
    ;;
    restart)
    killall -9 php
    $PHP_SCRIPT
    RETVAL=$?
    ;;
    *)
    echo Usage: php-fpm {start|stop|restart}
    exit 1
    ;;
    esac
    exit $RETVAL


Post a Comment

*
*