Created
April 9, 2012 05:39
-
-
Save satoruk/2341699 to your computer and use it in GitHub Desktop.
Run Script of unicorn that using RVM gemset.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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