|
|
@@ -0,0 +1,106 @@
|
|
|
+#! /bin/sh
|
|
|
+### BEGIN INIT INFO
|
|
|
+# Provides: FastCGI servers for Django
|
|
|
+# Required-Start: networking
|
|
|
+# Required-Stop: networking
|
|
|
+# Default-Start: 2 3 4 5
|
|
|
+# Default-Stop: S 0 1 6
|
|
|
+# Short-Description: Start FastCGI servers with Django.
|
|
|
+# Description: Django, in order to operate with FastCGI, must be started
|
|
|
+# in a very specific way with manage.py. This must be done
|
|
|
+# for each DJango web server that has to run.
|
|
|
+### END INIT INFO
|
|
|
+#
|
|
|
+# Author: Guillermo Fernandez Castellanos
|
|
|
+# <guillermo.fernandez.castellanos AT gmail.com>.
|
|
|
+#
|
|
|
+# Version: @(#)fastcgi 0.1 11-Jan-2007 guillermo.fernandez.castellanos AT gmail.com
|
|
|
+#
|
|
|
+
|
|
|
+#### SERVER SPECIFIC CONFIGURATION
|
|
|
+DJANGO_SITES="backlog"
|
|
|
+SITES_PATH=/var/www
|
|
|
+RUNFILES_PATH=$SITES_PATH/run
|
|
|
+HOST=127.0.0.1
|
|
|
+PORT_START=8008
|
|
|
+RUN_AS=sig
|
|
|
+FCGI_METHOD=threaded
|
|
|
+#### DO NOT CHANGE ANYTHING AFTER THIS LINE!
|
|
|
+
|
|
|
+set -e
|
|
|
+
|
|
|
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
|
|
+DESC="FastCGI servers"
|
|
|
+NAME=$0
|
|
|
+SCRIPTNAME=/etc/init.d/$NAME
|
|
|
+
|
|
|
+#
|
|
|
+# Function that starts the daemon/service.
|
|
|
+#
|
|
|
+d_start()
|
|
|
+{
|
|
|
+ # Starting all Django FastCGI processes
|
|
|
+ PORT=$PORT_START
|
|
|
+ for SITE in $DJANGO_SITES
|
|
|
+ do
|
|
|
+ echo -n ", $SITE"
|
|
|
+ if [ -f $RUNFILES_PATH/$SITE.pid ]; then
|
|
|
+ echo -n " already running"
|
|
|
+ else
|
|
|
+ start-stop-daemon --start --quiet \
|
|
|
+ --pidfile $RUNFILES_PATH/$SITE.pid \
|
|
|
+ --chuid $RUN_AS --exec /usr/bin/env -- python \
|
|
|
+ $SITES_PATH/$SITE/manage.py runfcgi \
|
|
|
+ method=$FCGI_METHOD \
|
|
|
+ host=$HOST port=$PORT pidfile=$RUNFILES_PATH/$SITE.pid
|
|
|
+ chmod 400 $RUNFILES_PATH/$SITE.pid
|
|
|
+ fi
|
|
|
+ let "PORT = $PORT + 1"
|
|
|
+ done
|
|
|
+}
|
|
|
+
|
|
|
+#
|
|
|
+# Function that stops the daemon/service.
|
|
|
+#
|
|
|
+d_stop() {
|
|
|
+ # Killing all Django FastCGI processes running
|
|
|
+ for SITE in $DJANGO_SITES
|
|
|
+ do
|
|
|
+ echo -n ", $SITE"
|
|
|
+ start-stop-daemon --stop --quiet --pidfile $RUNFILES_PATH/$SITE.pid \
|
|
|
+ || echo -n " not running"
|
|
|
+ if [ -f $RUNFILES_PATH/$SITE.pid ]; then
|
|
|
+ rm -f $RUNFILES_PATH/$SITE.pid
|
|
|
+ fi
|
|
|
+ done
|
|
|
+}
|
|
|
+
|
|
|
+ACTION="$1"
|
|
|
+case "$ACTION" in
|
|
|
+ start)
|
|
|
+ echo -n "Starting $DESC: $NAME"
|
|
|
+ d_start
|
|
|
+ echo "."
|
|
|
+ ;;
|
|
|
+
|
|
|
+ stop)
|
|
|
+ echo -n "Stopping $DESC: $NAME"
|
|
|
+ d_stop
|
|
|
+ echo "."
|
|
|
+ ;;
|
|
|
+
|
|
|
+ restart|force-reload)
|
|
|
+ echo -n "Restarting $DESC: $NAME"
|
|
|
+ d_stop
|
|
|
+ sleep 1
|
|
|
+ d_start
|
|
|
+ echo "."
|
|
|
+ ;;
|
|
|
+
|
|
|
+ *)
|
|
|
+ echo "Usage: $NAME {start|stop|restart|force-reload}" >&2
|
|
|
+ exit 3
|
|
|
+ ;;
|
|
|
+esac
|
|
|
+
|
|
|
+exit 0
|