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-05-22 01:54:20 -0700
commit772127fca59290327344e3851cbf5b0e5a4ce2df (patch)
tree2ae88b1a31dcd136f88fadd4960dc9f697cc0790 /examples
parent5bbd75f2bf63d17ef84c7cd156faca278d80bb5b (diff)
downloadunicorn-772127fca59290327344e3851cbf5b0e5a4ce2df.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