FcgiwrapDebianInitScript

Debian Fcgi Init Script
This is the init script used by Debian. It is mirrored here as reference only.

See Fcgiwrap for more information.

Debian version of this script is 1.0-1.

Copyright
This package was debianized by Jordi Mallach  on Wed, 04 Mar 2009 19:02:38 +0100.

It was downloaded from 

Upstream author: Grzegorz Nosek 

Copyright:

Copyright © 2007, 2008, 2009 Grzegorz Nosek

License:

fcgiwrap is licenced under the terms of the MIT licence:

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be   included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR   OTHER DEALINGS IN THE SOFTWARE.

The Debian packaging is copyright 2009, Jordi Mallach  and Sergio Talens-Oliag , licensed under the terms of the GPL version 3, or any later version as published by the Free Software Foundation, see `/usr/share/common-licenses/GPL-3'.

Init Script

 * 1) !/bin/sh
 * 2) BEGIN INIT INFO
 * 3) Provides:          fcgiwrap
 * 4) Required-Start:    $remote_fs
 * 5) Required-Stop:     $remote_fs
 * 6) Should-Start:
 * 7) Should-Stop:
 * 8) Default-Start:     2 3 4 5
 * 9) Default-Stop:      0 1 6
 * 10) Short-Description: FastCGI wrapper
 * 11) Description:       Simple server for running CGI applications over FastCGI
 * 12) END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

SPAWN_FCGI="/usr/bin/spawn-fcgi" DAEMON="/usr/sbin/fcgiwrap" NAME="fcgiwrap" DESC="FastCGI wrapper"

PIDFILE="/var/run/$NAME.pids"

test -x $SPAWN_FCGI || exit 0 test -x $DAEMON || exit 0

FCGI_CHILDREN="1" FCGI_SOCKET="/var/run/$NAME.socket" FCGI_USER="www-data" FCGI_GROUP="www-data"
 * 1) FCGI_APP Variables

. /lib/lsb/init-functions


 * 1) Default options, these can be overriden by the information
 * 2) at /etc/default/$NAME
 * 3) DAEMON_OPTS=""         # Additional options given to the server

DIETIME=10             # Time to wait for the server to die, in seconds # If this value is set too low you might not # let some servers to die gracefully and # 'restart' will not work

# If this value is set each time the server is                       # started (on start or restart) the script will # stall to try to determine if it is running # If it is not set and the server takes time # to setup a pid file the log message might # be a false positive (says it did not start                       # when it actually did)
 * 1) STARTTIME=2           # Time to wait for the server to start, in seconds

if [ -f /etc/default/$NAME ] ; then . /etc/default/$NAME fi
 * 1) Include defaults if available

DAEMONUSER="$FCGI_USER"

if [ -n "$DAEMONUSER" ] ; then if getent passwd | grep -q "^$DAEMONUSER:"; then # Obtain the uid and gid DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'` DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'` else log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist." exit 1 fi fi
 * 1) Check that the user exists (if we set a user)
 * 2) Does the user exist?

set -e

running_pid { pid=$1 name=$2 [ -z "$pid" ] && return 1 [ ! -d /proc/$pid ] && return 1 cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1` # Is this the expected server [ "$cmd" != "$name" ] && return 1 return 0 }
 * 1) Check if a given process pid's cmdline matches a given name

running { # No pidfile, probably no daemon present [ ! -f "$PIDFILE" ] && return 1 PIDS="$(cat "$PIDFILE")" for pid in $PIDS; do     if [ -n "$pid" ]; then running_pid $pid $DAEMON && return 0 || true fi   done return 1 }
 * 1) Check if the process is running looking at /proc
 * 2) (works for all users)

start_server { ARGS="-P $PIDFILE" # Adjust NUMBER of processes if [ -n "$FCGI_CHILDREN" ]; then ARGS="$ARGS -F '$FCGI_CHILDREN'" fi   # Adjust SOCKET or PORT and ADDR if [ -n "$FCGI_SOCKET" ]; then ARGS="$ARGS -s '$FCGI_SOCKET'" elif [ -n "$FCGI_PORT" ]; then if [ -n "$FCGI_ADDR" ]; then ARGS="$ARGS -a '$FCGI_ADDR'" fi     ARGS="$ARGS -p '$FCGI_PORT'" fi   # Adjust user if [ -n "$FCGI_USER" ]; then ARGS="$ARGS -u '$FCGI_USER'" if [ -n "$FCGI_SOCKET" ]; then ARGS="$ARGS -U '$FCGI_USER'" fi   fi    # Adjust group if [ -n "$FCGI_GROUP" ]; then ARGS="$ARGS -g '$FCGI_GROUP'" if [ -n "$FCGI_SOCKET" ]; then ARGS="$ARGS -G '$FCGI_GROUP'" fi   fi    eval `echo $SPAWN_FCGI $ARGS $DAEMON` > /dev/null errcode="$?" return $errcode }

stop_server { # Force the process to die killing it manually [ ! -e "$PIDFILE" ] && return PIDS="$(cat "$PIDFILE")" for pid in $PIDS; do     if running_pid '$pid' '$DAEMON'; then kill -15 $pid # Is it really dead? sleep "$DIETIME"s if running_pid $pid $DAEMON; then kill -9 $pid sleep "$DIETIME"s if running_pid $pid $DAEMON; then echo "Cannot kill $NAME (pid=$pid)!" exit 1 fi       fi      fi    done rm -f "$PIDFILE" if [ -n "$FCGI_SOCKET" ]; then rm -f "$FCGI_SOCKET" fi }

case "$1" in start)        log_daemon_msg "Starting $DESC" "$NAME"        # Check if it's running first        if running ;  then            log_progress_msg "apparently already running"            log_end_msg 0            exit 0        fi        if start_server ; then            # NOTE: Some servers might die some time after they start,            # this code will detect this issue if STARTTIME is set            # to a reasonable value            [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time             if  running ;  then                # It's ok, the server started and is running                log_end_msg 0            else                # It is not running after we did start                log_end_msg 1            fi        else            # Either we could not start it            log_end_msg 1        fi        ;;  stop|force-stop) log_daemon_msg "Stopping $DESC" "$NAME" if running ; then # Only stop the server if we see it running errcode=0 stop_server || errcode=$? log_end_msg $errcode else # If it's not running don't do anything log_progress_msg "apparently not running" log_end_msg 0 exit 0 fi       ;; restart|force-reload)       log_daemon_msg "Restarting $DESC" "$NAME"        errcode=0        stop_server || errcode=$?        # Wait some sensible amount, some server need this        [ -n "$DIETIME" ] && sleep $DIETIME        start_server || errcode=$?        [ -n "$STARTTIME" ] && sleep $STARTTIME        running || errcode=$?        log_end_msg $errcode        ;;  status)

log_daemon_msg "Checking status of $DESC" "$NAME" if running ; then log_progress_msg "running" log_end_msg 0 else log_progress_msg "apparently not running" log_end_msg 1 exit 1 fi       ;; reload)       log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"        log_warning_msg "cannot re-read the config file (use restart)."        ;;  *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2 exit 1 ;; esac
 * 1) Use this if the daemon cannot reload

exit 0