Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- ### BEGIN INIT INFO
- # Provides: unicorn
- # Required-Start: $remote_fs $syslog
- # Required-Stop: $remote_fs $syslog
- # Default-Start: 2 3 4 5
- # Default-Stop: 0 1 6
- # Short-Description: Manage unicorn server
- # Description: Start, stop, restart unicorn server for a specific application.
- ### END INIT INFO
- set -e
- # Feel free to change any of the following variables for your app:
- TIMEOUT=${TIMEOUT-60}
- #APP_ROOT=/home/deploy/apps/transpes/current
- APP_ROOT=/var/www/webroot/public
- PATH=$PATH:/usr/local/rvm/gems/ruby-2.1.0/bin/
- export PATH
- PID=$APP_ROOT/tmp/pids/unicorn.pid
- CMD="cd $APP_ROOT; /usr/local/rvm/gems/ruby-2.1.0/bin/bundle exec unicorn -D -c $APP_ROOT/config/unicorn.rb -E production"
- AS_USER=root
- set -u
- OLD_PIN="$PID.oldbin"
- sig () {
- test -s "$PID" && kill -$1 `cat $PID`
- }
- oldsig () {
- test -s $OLD_PIN && kill -$1 `cat $OLD_PIN`
- }
- run () {
- if [ "$(id -un)" = "$AS_USER" ]; then
- eval $1
- else
- su -c "$1" - $AS_USER
- fi
- }
- case "$1" in
- start)
- sig 0 && echo >&2 "Already running" && exit 0
- run "$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"
- run "$CMD"
- ;;
- upgrade)
- if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
- then
- n=$TIMEOUT
- while test -s $OLD_PIN && test $n -ge 0
- do
- printf '.' && sleep 1 && n=$(( $n - 1 ))
- done
- echo
- if test $n -lt 0 && test -s $OLD_PIN
- then
- echo >&2 "$OLD_PIN still exists after $TIMEOUT seconds"
- exit 1
- fi
- exit 0
- fi
- echo >&2 "Couldn't upgrade, starting '$CMD' instead"
- run "$CMD"
- ;;
- reopen-logs)
- sig USR1
- ;;
- *)
- echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>"
- exit 1
- ;;
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement