mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-11-29 10:24:20 +01:00
84 lines
1.7 KiB
Bash
Executable File
84 lines
1.7 KiB
Bash
Executable File
#!/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/sleede/apps/fablab/current
|
|
PID=$APP_ROOT/tmp/pids/unicorn.pid
|
|
CMD="cd $APP_ROOT; bundle exec unicorn -D -c $APP_ROOT/config/unicorn.rb -E production"
|
|
AS_USER=sleede
|
|
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 |