#! /bin/sh # ### BEGIN INIT INFO # Provides: php-fastcgi # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start and stop php-cgi in external FASTCGI mode # Description: Start and stop php-cgi in external FASTCGI mode ### END INIT INFO # # Do NOT "set -e" # Default values are enclosed in [] PATH=/usr/sbin:/usr/bin:/sbin:/bin # Start php-fastcgi? [no] START=yes # Read configuration data NAME=php-fastcgi DESC="php-cgi runing in external FASTCGI mode" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME # Daemon pathname and args: IP=[127.0.0.1], port=[9000] # /usr/bin/php-cgi links to -> /etc/alternatives/php-cgi ->/usr/bin/php5-cgi DAEMON=/usr/bin/php-cgi DAEMON_ARGS="-q -b 127.0.0.1:9000" # 20081106: To use Unix domain sockets substitute the former line for: # DAEMON_ARGS="-q -b /tmp/php-fastcgi.socket" # Take care to also change the relevant line(s) in nginx config file(s): # from: fastcgi_pass 127.0.0.1:9000; # to: fastcgi_pass unix:/tmp/php-fastcgi.socket; # Then restart both php-cgi and nginx # Which user runs PHP? [www-data] EXEC_AS_USER=www-data # php-cgi env. variables: spawned children [5] , concurrent requests [1000] PHP_FCGI_CHILDREN=2 #5 PHP_FCGI_MAX_REQUESTS=125 export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS # Exit if php-cgi is not installed [ -x "$DAEMON" ] || exit 0 # Load rcS variable settings and set (re)start/stop verbosity [ -f /etc/default/rcS ] && . /etc/default/rcS VERBOSE=yes # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # If $START not 'yes' AND we are not stopping the $DAEMON if [ "$START" != "yes" -a "$1" != "stop" ]; then log_warning_msg "To enable $NAME, edit /etc/init.d/$NAME and set START=yes" exit 0 fi do_start() { # Return values: 0=started ok,1=already running,2=unable to start start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \ --test > /dev/null || return 1 start-stop-daemon --start --quiet --background \ --chuid $EXEC_AS_USER --pidfile $PIDFILE --make-pidfile \ --exec $DAEMON -- $DAEMON_ARGS \ || return 2 } do_stop() { # Return values: 0=stopped ok,1=already stopped,2=unable to stop, # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 \ --pidfile $PIDFILE > /dev/null # --name $DAEMON RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Wait for children to finish too. start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 \ --exec $DAEMON [ "$?" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE return "$RETVAL" } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; restart|force-reload) log_daemon_msg "Restarting $DESC" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 3 ;; esac #