<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.nginx.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.nginx.org/index.php?title=FcgiwrapDebianInitScript&amp;feed=atom&amp;action=history</id>
		<title>FcgiwrapDebianInitScript - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.nginx.org/index.php?title=FcgiwrapDebianInitScript&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/index.php?title=FcgiwrapDebianInitScript&amp;action=history"/>
		<updated>2013-05-25T05:09:14Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.0</generator>

	<entry>
		<id>http://wiki.nginx.org/index.php?title=FcgiwrapDebianInitScript&amp;diff=910&amp;oldid=prev</id>
		<title>Yep: Added the fcgiwrap init script used by Debian.</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/index.php?title=FcgiwrapDebianInitScript&amp;diff=910&amp;oldid=prev"/>
				<updated>2011-05-22T08:46:57Z</updated>
		
		<summary type="html">&lt;p&gt;Added the fcgiwrap init script used by Debian.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Debian Fcgi Init Script ==&lt;br /&gt;
&lt;br /&gt;
This is the init script used by [http://packages.debian.org/squeeze/fcgiwrap Debian]. It is mirrored here as reference only. &lt;br /&gt;
&lt;br /&gt;
See [[Fcgiwrap | Fcgiwrap]] for more information.&lt;br /&gt;
&lt;br /&gt;
Debian version of this script is 1.0-1.&lt;br /&gt;
&lt;br /&gt;
== Copyright ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This package was debianized by Jordi Mallach &amp;lt;jordi@debian.org&amp;gt; on&lt;br /&gt;
Wed, 04 Mar 2009 19:02:38 +0100.&lt;br /&gt;
&lt;br /&gt;
It was downloaded from &amp;lt;http://nginx.localdomain.pl/wiki/FcgiWrap&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upstream author: Grzegorz Nosek &amp;lt;root@localdomain.pl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copyright:&lt;br /&gt;
&lt;br /&gt;
    Copyright © 2007, 2008, 2009 Grzegorz Nosek&lt;br /&gt;
&lt;br /&gt;
License:&lt;br /&gt;
&lt;br /&gt;
    fcgiwrap is licenced under the terms of the MIT licence:&lt;br /&gt;
&lt;br /&gt;
    Permission is hereby granted, free of charge, to any person&lt;br /&gt;
    obtaining a copy of this software and associated documentation&lt;br /&gt;
    files (the &amp;quot;Software&amp;quot;), to deal in the Software without&lt;br /&gt;
    restriction, including without limitation the rights to use,&lt;br /&gt;
    copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
    copies of the Software, and to permit persons to whom the&lt;br /&gt;
    Software is furnished to do so, subject to the following&lt;br /&gt;
    conditions:&lt;br /&gt;
&lt;br /&gt;
    The above copyright notice and this permission notice shall be&lt;br /&gt;
    included in all copies or substantial portions of the Software.&lt;br /&gt;
&lt;br /&gt;
    THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND,&lt;br /&gt;
    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES&lt;br /&gt;
    OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND&lt;br /&gt;
    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT&lt;br /&gt;
    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,&lt;br /&gt;
    WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING&lt;br /&gt;
    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR&lt;br /&gt;
    OTHER DEALINGS IN THE SOFTWARE.&lt;br /&gt;
&lt;br /&gt;
The Debian packaging is copyright 2009, Jordi Mallach &amp;lt;jordi@iti.upv.es&amp;gt; and&lt;br /&gt;
Sergio Talens-Oliag &amp;lt;sto@iti.upv.es&amp;gt;, licensed under the terms of the GPL&lt;br /&gt;
version 3, or any later version as published by the Free Software Foundation,&lt;br /&gt;
see `/usr/share/common-licenses/GPL-3'.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Init Script ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides:          fcgiwrap&lt;br /&gt;
# Required-Start:    $remote_fs&lt;br /&gt;
# Required-Stop:     $remote_fs&lt;br /&gt;
# Should-Start:&lt;br /&gt;
# Should-Stop:&lt;br /&gt;
# Default-Start:     2 3 4 5&lt;br /&gt;
# Default-Stop:      0 1 6&lt;br /&gt;
# Short-Description: FastCGI wrapper&lt;br /&gt;
# Description:       Simple server for running CGI applications over FastCGI&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
&lt;br /&gt;
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin&lt;br /&gt;
&lt;br /&gt;
SPAWN_FCGI=&amp;quot;/usr/bin/spawn-fcgi&amp;quot;&lt;br /&gt;
DAEMON=&amp;quot;/usr/sbin/fcgiwrap&amp;quot;&lt;br /&gt;
NAME=&amp;quot;fcgiwrap&amp;quot;&lt;br /&gt;
DESC=&amp;quot;FastCGI wrapper&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PIDFILE=&amp;quot;/var/run/$NAME.pids&amp;quot;&lt;br /&gt;
&lt;br /&gt;
test -x $SPAWN_FCGI || exit 0&lt;br /&gt;
test -x $DAEMON || exit 0&lt;br /&gt;
&lt;br /&gt;
# FCGI_APP Variables&lt;br /&gt;
FCGI_CHILDREN=&amp;quot;1&amp;quot;&lt;br /&gt;
FCGI_SOCKET=&amp;quot;/var/run/$NAME.socket&amp;quot;&lt;br /&gt;
FCGI_USER=&amp;quot;www-data&amp;quot;&lt;br /&gt;
FCGI_GROUP=&amp;quot;www-data&amp;quot;&lt;br /&gt;
&lt;br /&gt;
. /lib/lsb/init-functions&lt;br /&gt;
&lt;br /&gt;
# Default options, these can be overriden by the information&lt;br /&gt;
# at /etc/default/$NAME&lt;br /&gt;
#DAEMON_OPTS=&amp;quot;&amp;quot;          # Additional options given to the server&lt;br /&gt;
&lt;br /&gt;
DIETIME=10              # Time to wait for the server to die, in seconds&lt;br /&gt;
                        # If this value is set too low you might not&lt;br /&gt;
                        # let some servers to die gracefully and&lt;br /&gt;
                        # 'restart' will not work&lt;br /&gt;
&lt;br /&gt;
#STARTTIME=2            # Time to wait for the server to start, in seconds&lt;br /&gt;
                        # If this value is set each time the server is&lt;br /&gt;
                        # started (on start or restart) the script will&lt;br /&gt;
                        # stall to try to determine if it is running&lt;br /&gt;
                        # If it is not set and the server takes time&lt;br /&gt;
                        # to setup a pid file the log message might&lt;br /&gt;
                        # be a false positive (says it did not start&lt;br /&gt;
                        # when it actually did)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Include defaults if available&lt;br /&gt;
if [ -f /etc/default/$NAME ] ; then&lt;br /&gt;
    . /etc/default/$NAME&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
DAEMONUSER=&amp;quot;$FCGI_USER&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Check that the user exists (if we set a user)&lt;br /&gt;
# Does the user exist?&lt;br /&gt;
if [ -n &amp;quot;$DAEMONUSER&amp;quot; ] ; then&lt;br /&gt;
    if getent passwd | grep -q &amp;quot;^$DAEMONUSER:&amp;quot;; then&lt;br /&gt;
        # Obtain the uid and gid&lt;br /&gt;
        DAEMONUID=`getent passwd |grep &amp;quot;^$DAEMONUSER:&amp;quot; | awk -F : '{print $3}'`&lt;br /&gt;
        DAEMONGID=`getent passwd |grep &amp;quot;^$DAEMONUSER:&amp;quot; | awk -F : '{print $4}'`&lt;br /&gt;
    else&lt;br /&gt;
        log_failure_msg &amp;quot;The user $DAEMONUSER, required to run $NAME does not exist.&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
    fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
set -e&lt;br /&gt;
&lt;br /&gt;
running_pid() {&lt;br /&gt;
# Check if a given process pid's cmdline matches a given name&lt;br /&gt;
    pid=$1&lt;br /&gt;
    name=$2&lt;br /&gt;
    [ -z &amp;quot;$pid&amp;quot; ] &amp;amp;&amp;amp; return 1&lt;br /&gt;
    [ ! -d /proc/$pid ] &amp;amp;&amp;amp;  return 1&lt;br /&gt;
    cmd=`cat /proc/$pid/cmdline | tr &amp;quot;\000&amp;quot; &amp;quot;\n&amp;quot;|head -n 1 |cut -d : -f 1`&lt;br /&gt;
    # Is this the expected server&lt;br /&gt;
    [ &amp;quot;$cmd&amp;quot; != &amp;quot;$name&amp;quot; ] &amp;amp;&amp;amp; return 1&lt;br /&gt;
    return 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
running() {&lt;br /&gt;
# Check if the process is running looking at /proc&lt;br /&gt;
# (works for all users)&lt;br /&gt;
    # No pidfile, probably no daemon present&lt;br /&gt;
    [ ! -f &amp;quot;$PIDFILE&amp;quot; ] &amp;amp;&amp;amp; return 1&lt;br /&gt;
    PIDS=&amp;quot;$(cat &amp;quot;$PIDFILE&amp;quot;)&amp;quot;&lt;br /&gt;
    for pid in $PIDS; do&lt;br /&gt;
      if [ -n &amp;quot;$pid&amp;quot; ]; then&lt;br /&gt;
        running_pid $pid $DAEMON &amp;amp;&amp;amp; return 0 || true&lt;br /&gt;
      fi&lt;br /&gt;
    done&lt;br /&gt;
    return 1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
start_server() {&lt;br /&gt;
    ARGS=&amp;quot;-P $PIDFILE&amp;quot;&lt;br /&gt;
    # Adjust NUMBER of processes&lt;br /&gt;
    if [ -n &amp;quot;$FCGI_CHILDREN&amp;quot; ]; then&lt;br /&gt;
       ARGS=&amp;quot;$ARGS -F '$FCGI_CHILDREN'&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    # Adjust SOCKET or PORT and ADDR&lt;br /&gt;
    if [ -n &amp;quot;$FCGI_SOCKET&amp;quot; ]; then&lt;br /&gt;
      ARGS=&amp;quot;$ARGS -s '$FCGI_SOCKET'&amp;quot;&lt;br /&gt;
    elif [ -n &amp;quot;$FCGI_PORT&amp;quot; ]; then&lt;br /&gt;
      if [ -n &amp;quot;$FCGI_ADDR&amp;quot; ]; then&lt;br /&gt;
        ARGS=&amp;quot;$ARGS -a '$FCGI_ADDR'&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
      ARGS=&amp;quot;$ARGS -p '$FCGI_PORT'&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    # Adjust user&lt;br /&gt;
    if [ -n &amp;quot;$FCGI_USER&amp;quot; ]; then&lt;br /&gt;
      ARGS=&amp;quot;$ARGS -u '$FCGI_USER'&amp;quot;&lt;br /&gt;
      if [ -n &amp;quot;$FCGI_SOCKET&amp;quot; ]; then&lt;br /&gt;
        ARGS=&amp;quot;$ARGS -U '$FCGI_USER'&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
    fi&lt;br /&gt;
    # Adjust group&lt;br /&gt;
    if [ -n &amp;quot;$FCGI_GROUP&amp;quot; ]; then&lt;br /&gt;
      ARGS=&amp;quot;$ARGS -g '$FCGI_GROUP'&amp;quot;&lt;br /&gt;
      if [ -n &amp;quot;$FCGI_SOCKET&amp;quot; ]; then&lt;br /&gt;
        ARGS=&amp;quot;$ARGS -G '$FCGI_GROUP'&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
    fi&lt;br /&gt;
    eval `echo $SPAWN_FCGI $ARGS $DAEMON` &amp;gt; /dev/null&lt;br /&gt;
    errcode=&amp;quot;$?&amp;quot;&lt;br /&gt;
    return $errcode&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop_server() {&lt;br /&gt;
    # Force the process to die killing it manually&lt;br /&gt;
    [ ! -e &amp;quot;$PIDFILE&amp;quot; ] &amp;amp;&amp;amp; return&lt;br /&gt;
    PIDS=&amp;quot;$(cat &amp;quot;$PIDFILE&amp;quot;)&amp;quot;&lt;br /&gt;
    for pid in $PIDS; do&lt;br /&gt;
      if running_pid '$pid' '$DAEMON'; then&lt;br /&gt;
        kill -15 $pid&lt;br /&gt;
        # Is it really dead?&lt;br /&gt;
        sleep &amp;quot;$DIETIME&amp;quot;s&lt;br /&gt;
        if running_pid $pid $DAEMON; then&lt;br /&gt;
          kill -9 $pid&lt;br /&gt;
          sleep &amp;quot;$DIETIME&amp;quot;s&lt;br /&gt;
          if running_pid $pid $DAEMON; then&lt;br /&gt;
              echo &amp;quot;Cannot kill $NAME (pid=$pid)!&amp;quot;&lt;br /&gt;
              exit 1&lt;br /&gt;
          fi&lt;br /&gt;
        fi&lt;br /&gt;
      fi&lt;br /&gt;
    done&lt;br /&gt;
    rm -f &amp;quot;$PIDFILE&amp;quot;&lt;br /&gt;
    if [ -n &amp;quot;$FCGI_SOCKET&amp;quot; ]; then&lt;br /&gt;
      rm -f &amp;quot;$FCGI_SOCKET&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
        log_daemon_msg &amp;quot;Starting $DESC&amp;quot; &amp;quot;$NAME&amp;quot;&lt;br /&gt;
        # Check if it's running first&lt;br /&gt;
        if running ;  then&lt;br /&gt;
            log_progress_msg &amp;quot;apparently already running&amp;quot;&lt;br /&gt;
            log_end_msg 0&lt;br /&gt;
            exit 0&lt;br /&gt;
        fi&lt;br /&gt;
        if start_server ; then&lt;br /&gt;
            # NOTE: Some servers might die some time after they start,&lt;br /&gt;
            # this code will detect this issue if STARTTIME is set&lt;br /&gt;
            # to a reasonable value&lt;br /&gt;
            [ -n &amp;quot;$STARTTIME&amp;quot; ] &amp;amp;&amp;amp; sleep $STARTTIME # Wait some time &lt;br /&gt;
            if  running ;  then&lt;br /&gt;
                # It's ok, the server started and is running&lt;br /&gt;
                log_end_msg 0&lt;br /&gt;
            else&lt;br /&gt;
                # It is not running after we did start&lt;br /&gt;
                log_end_msg 1&lt;br /&gt;
            fi&lt;br /&gt;
        else&lt;br /&gt;
            # Either we could not start it&lt;br /&gt;
            log_end_msg 1&lt;br /&gt;
        fi&lt;br /&gt;
        ;;&lt;br /&gt;
  stop|force-stop)&lt;br /&gt;
        log_daemon_msg &amp;quot;Stopping $DESC&amp;quot; &amp;quot;$NAME&amp;quot;&lt;br /&gt;
        if running ; then&lt;br /&gt;
            # Only stop the server if we see it running&lt;br /&gt;
            errcode=0&lt;br /&gt;
            stop_server || errcode=$?&lt;br /&gt;
            log_end_msg $errcode&lt;br /&gt;
        else&lt;br /&gt;
            # If it's not running don't do anything&lt;br /&gt;
            log_progress_msg &amp;quot;apparently not running&amp;quot;&lt;br /&gt;
            log_end_msg 0&lt;br /&gt;
            exit 0&lt;br /&gt;
        fi&lt;br /&gt;
        ;;&lt;br /&gt;
  restart|force-reload)&lt;br /&gt;
        log_daemon_msg &amp;quot;Restarting $DESC&amp;quot; &amp;quot;$NAME&amp;quot;&lt;br /&gt;
        errcode=0&lt;br /&gt;
        stop_server || errcode=$?&lt;br /&gt;
        # Wait some sensible amount, some server need this&lt;br /&gt;
        [ -n &amp;quot;$DIETIME&amp;quot; ] &amp;amp;&amp;amp; sleep $DIETIME&lt;br /&gt;
        start_server || errcode=$?&lt;br /&gt;
        [ -n &amp;quot;$STARTTIME&amp;quot; ] &amp;amp;&amp;amp; sleep $STARTTIME&lt;br /&gt;
        running || errcode=$?&lt;br /&gt;
        log_end_msg $errcode&lt;br /&gt;
        ;;&lt;br /&gt;
  status)&lt;br /&gt;
&lt;br /&gt;
        log_daemon_msg &amp;quot;Checking status of $DESC&amp;quot; &amp;quot;$NAME&amp;quot;&lt;br /&gt;
        if running ;  then&lt;br /&gt;
            log_progress_msg &amp;quot;running&amp;quot;&lt;br /&gt;
            log_end_msg 0&lt;br /&gt;
        else&lt;br /&gt;
            log_progress_msg &amp;quot;apparently not running&amp;quot;&lt;br /&gt;
            log_end_msg 1&lt;br /&gt;
            exit 1&lt;br /&gt;
        fi&lt;br /&gt;
        ;;&lt;br /&gt;
 # Use this if the daemon cannot reload&lt;br /&gt;
  reload)&lt;br /&gt;
        log_warning_msg &amp;quot;Reloading $NAME daemon: not implemented, as the daemon&amp;quot;&lt;br /&gt;
        log_warning_msg &amp;quot;cannot re-read the config file (use restart).&amp;quot;&lt;br /&gt;
        ;;&lt;br /&gt;
  *)&lt;br /&gt;
        N=/etc/init.d/$NAME&lt;br /&gt;
        echo &amp;quot;Usage: $N {start|stop|force-stop|restart|force-reload|status}&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yep</name></author>	</entry>

	</feed>