Skip to content

Instantly share code, notes, and snippets.

@suda
Created December 20, 2010 14:49
Show Gist options
  • Star 18 You must be signed in to star a gist
  • Fork 10 You must be signed in to fork a gist
  • Save suda/748450 to your computer and use it in GitHub Desktop.
Save suda/748450 to your computer and use it in GitHub Desktop.
Gunicorn init.d script (debian/ubuntu)
#!/bin/sh
### BEGIN INIT INFO
# Provides: gunicorn
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the gunicorn server
# Description: starts gunicorn using start-stop-daemon
### END INIT INFO
# Gunicorn init.d script for debian/ubuntu
# Written by Wojtek 'suda' Siudzinski <admin@suda.pl>
# Gist: https://gist.github.com/748450
#
# Sample config (/etc/default/gunicorn):
#
# SERVERS=(
# 'server_name port project_path number_of_workers'
# )
# RUN_AS='www-data'
#
# WARNING: user $RUN_AS must have +w on /var/run/gunicorn
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/gunicorn_django
NAME=gunicorn
DESC=gunicorn
SERVER="$2"
test -x $DAEMON || exit 0
if [ -f /etc/default/gunicorn ] ; then
. /etc/default/gunicorn
fi
if [ ! -d /var/run/gunicorn ]; then
mkdir /var/run/gunicorn
fi
start () {
for i in "${SERVERS[@]}"
do
:
set -- "$i"
IFS=" "; declare -a data=($*)
if [ "$SERVER" ]; then
if [ "$SERVER" != ${data[0]} ]; then
continue
fi
fi
echo "Spawning ${data[0]}"
start-stop-daemon --start --pidfile /var/run/gunicorn/${data[0]}.pid -c $RUN_AS -d ${data[2]} --exec $DAEMON -- -b 127.0.0.1:${data[1]} -w ${data[3]} -D -p /var/run/gunicorn/${data[0]}.pid
done
return
}
stop () {
for i in "${SERVERS[@]}"
do
:
set -- "$i"
IFS=" "; declare -a data=($*)
if [ "$SERVER" ]; then
if [ "$SERVER" != ${data[0]} ]; then
continue
fi
fi
if [ -f /var/run/gunicorn/${data[0]}.pid ]; then
echo "Killing ${data[0]}"
kill $(cat /var/run/gunicorn/${data[0]}.pid)
fi
done
}
case "$1" in
start)
echo "Starting $DESC"
start
;;
stop)
echo "Stopping $DESC"
stop
;;
restart)
echo "Restarting $DESC"
stop
sleep 1
start
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart} [particular_server_to_restart]" >&2
exit 1
;;
esac
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment