Created
July 27, 2012 23:08
-
-
Save guerrerocarlos/3190940 to your computer and use it in GitHub Desktop.
init.d script for easy Django instances start,stop,restart. to INSTALL: just copy in /etc/init.d and run 'update-rc.d django-fastcgi defaults'
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /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>. | |
# Modified by: Carlos Alejandro Guerrero Mora | |
# <guerrerocarlos AT gmail.com> | |
# | |
# Version: @(#)fastcgi 0.2 27-Jul-2012 guerrerocarlos AT gmail.com | |
# @(#)fastcgi 0.1 11-Jan-2007 guillermo.fernandez.castellanos AT gmail.com | |
# | |
#### SERVER SPECIFIC CONFIGURATION | |
DJANGO_SITES="app1 app2 app3" | |
SITES_PATH=/home/user/django_apps | |
HOST=127.0.0.1 | |
PORT_START=8080 | |
RUN_AS=gc | |
FCGI_METHOD=threaded | |
RUNFILES_PATH=$SITES_PATH/run | |
#### DO NOT CHANGE ANYTHING AFTER THIS LINE! | |
set -e | |
mkdir -p $RUNFILES_PATH | |
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 ", $SITE" | |
PID=$RUNFILES_PATH/$SITE.pid | |
if [ -f $PID ]; then | |
echo -n " already running" | |
else | |
start-stop-daemon --start --quiet \ | |
--pidfile $PID \ | |
--chuid $RUN_AS --exec /usr/bin/env -- python \ | |
$SITES_PATH/$SITE/manage.py runfcgi \ | |
method=$FCGI_METHOD \ | |
host=$HOST port=$PORT pidfile=$PID | |
chmod 400 $PID | |
fi | |
PORT=`expr $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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment