PHP init script to go with nginx?

Volodymyr Kostyrko c.kworr at gmail.com
Fri Jun 13 13:31:17 MSD 2008


Phillip B Oldham wrote:
> Hi all
> 
> I'm running PHP5 & nginx on a number of servers now, and I'm really 
> happy with everything... except one item which is starting to bug me.
> 
> Basically, on all the servers I run PHP5 by issuing the following 
> command from a shell script:
> 
> sudo -u nginx sh -c 'PHP_FCGI_MAX_REQUESTS=50 PHP_FCGI_CHILDREN=4 
> /usr/local/bin/php-cgi -b 10005 &'
> 
> Which works fine, other than it doen't start php on boot. Its getting 
> annoying because if the server reboots I have to manually start PHP.
> 
> Has anyone got a happy php-fastcgi install which doesn't use spawn-fcgi?

Here are some examples. They do create named sockets per user.

Linux:

#!/bin/ash
#
# chkconfig: 234 25 75
# description: php FastCGI daemon

case $1 in
restart)
         /etc/init.d/phpFcgid stop
         /etc/init.d/phpFcgid start
         ;;
start)
         users="www"
         www_childs='2'
         for user in ${users}; do
                 socketdir="/tmp/.fastcgi.${user}"
                 mkdir -p ${socketdir}
                 chown ${user}:nobody ${socketdir}
                 chmod 0750 ${socketdir}
                 eval export PHP_FCGI_CHILDREN=\${${user}_childs}
                 su -m ${user} -c "/opt/php5/bin/php-cgi -b 
${socketdir}/socket&"
         done
         ;;
stop) /usr/bin/pkill php-cgi ;;
esac

FreeBSD:

#!/bin/sh

# PROVIDE: phpFcgid
# REQUIRE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="phpFcgid"
rcvar=`set_rcvar`

load_rc_config $name
: ${phpFcgid_enable="NO"}
: ${phpFcgid_users="www"}
: ${phpFcgid_children="2"}

start_cmd=phpFcgid_start
stop_cmd=phpFcgid_stop

phpFcgid_start() {
         echo "Starting $name."
         export PHP_FCGI_CHILDREN=${phpFcgid_children}
         for user in ${phpFcgid_users}; do
                 socketdir="/tmp/.fastcgi.${user}"
                 mkdir -p ${socketdir}
                 chown ${user}:www ${socketdir}
                 chmod 0750 ${socketdir}
                 su -m ${user} -c "/usr/local/bin/php-cgi -b 
${socketdir}/socket&"
         done
}

phpFcgid_stop() {
         echo "Stopping $name."
         pids=`pgrep php-cgi`
         pkill php-cgi
         wait_for_pids $pids
}

run_rc_command "$1"

-- 
Sphinx of black quartz judge my vow.






More information about the nginx mailing list