{{{ #! /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 # . # # Changed: Jannis Leidel # # # Version: @(#)fastcgi 0.2 13-Jun-2007 jannis AT leidel.info # #### SERVER SPECIFIC CONFIGURATION # django project names/directories DJANGO_SITES="myapp myapp2 myapp3" # path to the directory with your django projects SITES_PATH=/path/to/django/projects # path to the directory for socket and pid files RUNFILES_PATH=$SITES_PATH/run # please make sure this is NOT root # local user prefered, www-data accepted RUN_AS=www-data # maximum requests before fast-cgi process respawns # (a.k.a. get killed and let live) MAXREQUESTS=1000 #### 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 mkdir -p $RUNFILES_PATH chown -R $RUN_AS:$RUN_AS $RUNFILES_PATH # # 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 \ protocol=fcgi method=threaded maxrequests=$MAXREQUESTS \ socket=$RUNFILES_PATH/$SITE.socket \ pidfile=$RUNFILES_PATH/$SITE.pid chmod 400 $RUNFILES_PATH/$SITE.pid fi sleep 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 sleep 1 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 2 d_start echo "." ;; *) echo "Usage: $NAME {start|stop|restart|force-reload}" >&2 exit 3 ;; esac exit 0 }}}