about summary refs log tree commit homepage
path: root/examples
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-04-29 11:53:00 -0700
committerEric Wong <normalperson@yhbt.net>2009-04-29 11:53:00 -0700
commit309cf04cb78971370794ea60cc724bfd5421ca53 (patch)
tree76588558917a4a586010966244ada0d21742fe34 /examples
parente9efec7fb79b0ff010664a4b85aaaddbf9a1e820 (diff)
downloadunicorn-309cf04cb78971370794ea60cc724bfd5421ca53.tar.gz
This was done in Bourne shell because it's easier for UNIX
sysadmins who don't know Ruby to understand and modify.
Additionally, it can be used for nginx or anything else
that shares compatible signal handling.
Diffstat (limited to 'examples')
-rw-r--r--examples/init.sh54
1 files changed, 54 insertions, 0 deletions
diff --git a/examples/init.sh b/examples/init.sh
new file mode 100644
index 0000000..866a644
--- /dev/null
+++ b/examples/init.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+set -u
+set -e
+# Example init script, this can be used with nginx, too,
+# since nginx and unicorn accept the same signals
+
+# Feel free to change any of the following variables for your app:
+APP_ROOT=/home/x/my_app/current
+PID=$APP_ROOT/tmp/pids/unicorn.pid
+CMD="/usr/bin/unicorn -D -c $APP_ROOT/config/unicorn.rb"
+INIT_CONF=$APP_ROOT/config/init.conf
+
+test -f "$INIT_CONF" && . $INIT_CONF
+
+old_pid="$PID.oldbin"
+
+cd $APP_ROOT || exit 1
+
+sig () {
+        test -s "$PID" && kill -$1 `cat $PID`
+}
+
+oldsig () {
+        test -s $old_pid && kill -$1 `cat $old_pid`
+}
+
+case $1 in
+start)
+        sig 0 && echo >&2 "Already running" && exit 0
+        $CMD
+        ;;
+stop)
+        sig QUIT && exit 0
+        echo >&2 "Not running"
+        ;;
+force-stop)
+        sig TERM && exit 0
+        echo >&2 "Not running"
+        ;;
+restart|reload)
+        sig HUP && echo reloaded OK && exit 0
+        echo >&2 "Couldn't reload, starting '$CMD' instead"
+        $CMD
+        ;;
+upgrade)
+        sig USR2 && sleep 2 && sig 0 && oldsig QUIT && exit 0
+        echo >&2 "Couldn't upgrade, starting '$CMD' instead"
+        $CMD
+        ;;
+*)
+        echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop>"
+        exit 1
+        ;;
+esac