Skip to content

Instantly share code, notes, and snippets.

@satoruk
Created April 9, 2012 05:39
Show Gist options
  • Save satoruk/2341699 to your computer and use it in GitHub Desktop.
Save satoruk/2341699 to your computer and use it in GitHub Desktop.
Run Script of unicorn that using RVM gemset.
#!/bin/bash
### BEGIN INIT INFO
# Provides: unicorn
# Required-Start:
# Required-Stop:
# Should-Start;
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start the unicorns at boot
# Description: Enable APPLICATION at boot time.
### END INIT INFO
#
# Use this as a basis for your own Unicorn init script.
# Change these to match your app:
user=www
env=production
app_name=foo.example.com
app_root="/var/www/$app_name"
prog="Unicorn HTTP server ($app_name : $env)"
configfile="$app_root/config/unicorn.rb"
unicorn_opts="-D -E $env -c $configfile"
rvm_gemset_name="ree-1.8.7-2012.02@redmine"
cmd="cd $app_root; rvm $rvm_gemset_name; unicorn_rails $unicorn_opts"
# Source function library.
. /etc/rc.d/init.d/functions
cd $app_root || exit 1
get_pid () {
local pid
pid=`ps ax|grep 'unicorn\(_rails\)\? master'|grep $configfile|grep -v grep|awk '{print $1}'`
echo $pid
}
pid=`get_pid`
sig () {
local RC pid signal base
RC=0
if [ "$#" -eq 0 ]; then
echo $"Usage: sig [-pid PID] [-signal SIGNAL]"
return 1
fi
if [ "$1" = "-signal" ]; then
signal=$2
shift 2
fi
if [ "$1" = "-pid" ]; then
pid=$2
shift 2
fi
base=${1##*/}
if checkpid $pid; then
kill -$signal $pid >/dev/null 2>&1
RC=$?
[ "$RC" -eq 0 ] && success $"$base $signal" || failure $"$base $signal"
else
RC=7 # Program is not running
fi
return $RC
}
start () {
echo -n $"Starting $prog: "
su - $user -c "$cmd"
retval=$?
if [ "$retval" -eq 0 ]; then
# Timeout
for i in {1..30}; do
sleep 1
pid=`get_pid`
[ "$pid" != "" ] && break
done
[ "$pid" = "" ] && failure $"$prog time out" || success $"$prog"
else
failure $"$prog"
fi
echo
return $retval
}
stop () {
echo -n $"Stopping $prog: "
sig -signal QUIT -pid $pid $prog
retval=$?
echo
return $retval
}
reload () {
echo -n $"Reloading $prog: "
sig -signal HUP -pid $pid $plog
retval=$?
echo
return $retval
}
force-stop () {
echo -n $"Force stopping $prog: "
sig -signal TERM -pid $pid $plog
retval=$?
echo
return $retval
}
upgrade () {
echo -n $"Staring new master $prog: "
warning "Unsupported operation"
return -1
# sig -signal USR2 -pid $pid $plog >/dev/null 2>&1
# retval=$?
#
# su - $user -c "$cmd"
# retval=$?
# echo
# sleep 1
# return $retval
}
rotate () {
echo -n $"Log file lotaing $prog: "
sig -signal USR1 -pid $pid
retval=$?
echo
return $retval
}
rh_status() {
if [ "$pid" = "" ]; then
echo $"${prog} is stopped"
return 1
else
sig -signal 0 -pid $pid $prog
retval=$?
if [ "$retval" -ne 0 ]; then
# why?
echo $"${prog} (pid $pid) is stopped"
return 2
else
echo $"${prog} (pid $pid) is running..."
return 0
fi
fi
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
stop
for i in {1..30}; do
sleep 1
pid=`get_pid`
[ "$pid" = "" ] && break
done
start
;;
reload)
rh_status_q || exit 7
$1
;;
status)
rh_status
;;
force-stop)
rh_status_q || exit 7
$1
;;
upgrade)
rh_status_q || exit 7
$1
;;
rotate)
rh_status_q || exit 7
$1
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|status|force-stop|upgrade|rotate}"
exit 2
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment