起動用シェルスクリプト

uWSGI用に書いた起動用シェルスクリプトですが、他でも使えるはずと思って公開!

#別にネタが無いからじゃないんだからね!

License : Public Domain

#!/bin/sh
SCRIPTDIR=$(cd `dirname $0`; pwd)

#UWSGI=/usr/local/bin/uwsgi
UWSGI=`which uwsgi`
TMPDIR=$SCRIPTDIR/.tmp
SOCK=$TMPDIR/uwsgi.sock
PIDFILE=$TMPDIR/uwsgi.pid
LOGFILE=$SCRIPTDIR/log.txt
MODULE="runserver:app"

export PYTHON_EGG_CACHE=$TMPDIR

start_uwsgi() {
	if [ -z "$UWSGI" ]; then
		echo "Error : uwsgi is not found."
		exit 1
	fi
	if [ ! -x "$UWSGI" ]; then
		echo "Error : $UWSGI is not found or not executable."
		exit 1
	fi

	echo -n "Starting uWSGI ... "
	{ rm -rf $TMPDIR; mkdir -p $TMPDIR; } >/dev/null 2>&1
	$UWSGI -M -d $LOGFILE -s $SOCK -p 5 --pidfile $PIDFILE \
		   --python-path $SCRIPTDIR -w $MODULE
	echo 
}

graceful_uwsgi() {
	echo -n "Graceful reloading uWSGI ... "
	[ -f "$PIDFILE" ] && kill -HUP `cat $PIDFILE`
	echo 
}

stop_uwsgi() {
	echo -n "Stopping uWSGI ... "
	[ -f "$PIDFILE" ] && kill -INT `cat $PIDFILE` && rm -f $PIDFILE
	echo 
}

case $1 in
	start) start_uwsgi ;;
	stop)  stop_uwsgi ;;
	graceful) graceful_uwsgi ;;
	restart)
		stop_uwsgi
		sleep 5
		start_uwsgi
		;;
	*)
		echo "$0 start|srop|graceful|restart"
		exit 1
		;;
esac