Project

General

Profile

Download (3.29 KB) Statistics
| Branch: | Tag: | Revision:
#!/bin/bash
#
# Init script for foreman
#
# chkconfig: - 85 15
# description: Init script for foreman

# Source function library.
. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/foreman ]; then
. /etc/sysconfig/foreman
fi

function run_in_scl() {
scl enable ruby193 "thin $*"
}

prog=foreman
THIN=/usr/bin/thin
RETVAL=0
FOREMAN_PORT=${FOREMAN_PORT:-3000}
FOREMAN_USER=${FOREMAN_USER:-foreman}
FOREMAN_HOME=${FOREMAN_HOME:-/usr/share/foreman}
export HOME=$FOREMAN_HOME
FOREMAN_ENV=${FOREMAN_ENV:-production}
FOREMAN_USE_PASSENGER=${FOREMAN_USE_PASSENGER:-0}
FOREMAN_USE_THIN=${FOREMAN_USE_THIN:-0}

if [[ -z $FOREMAN_PID ]]
then
if [[ $FOREMAN_USE_THIN = 1 ]]
then
FOREMAN_PID=${FOREMAN_HOME}/tmp/pids/thin.*.pid
else
FOREMAN_PID=${FOREMAN_HOME}/tmp/pids/server.pid
fi
fi

start() {
echo -n $"Starting $prog: "
if [[ $FOREMAN_USE_THIN = 1 ]]
then
$THIN start --user ${FOREMAN_USER} \
--environment $FOREMAN_ENV \
--group ${FOREMAN_USER} \
--config /etc/foreman/thin.yml \
--rackup "${FOREMAN_HOME}/config.ru"
else
cd ${FOREMAN_HOME}
daemon --user ${FOREMAN_USER} /usr/bin/ruby ${FOREMAN_HOME}/script/rails s -p ${FOREMAN_PORT} -e ${FOREMAN_ENV} -d ${FOREMAN_EXTRA_ARGS} > /dev/null
fi
RETVAL=$?
if [ $RETVAL = 0 ]
then
echo_success
touch /var/lock/subsys/foreman
else
echo_failure
fi

echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
RETVAL=0
for PID in $FOREMAN_PID
do
if [ -f ${PID} ]; then
killproc -p ${PID}
RESULT=$? && [[ $RETVAL = 0 ]] && RETVAL=$RESULT
else
echo -n $"Foreman was not running.";
failure $"Foreman was not running.";
echo
RETVAL=1
fi
done
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/foreman
return $RETVAL
}

restart() {
if [ ${FOREMAN_USE_PASSENGER} = 1 ]
then
railsrestart
RETVAL=$?
else
stop
start
RETVAL=$?
fi
}

railsrestart() {
echo -n $"Restarting foreman rails app: "
touch "${FOREMAN_HOME}/tmp/restart.txt"
RETVAL=$?
if [ $RETVAL = 0 ]
then
echo_success
else
echo_failure
fi

echo
return $RETVAL
}

# See how we were called.
case "$1" in
start|stop)
if [ ${FOREMAN_USE_PASSENGER} = 1 ]
then
echo -n "Foreman is running under passenger"
echo_passed
echo
else
$1
fi
RETVAL=$?
;;
restart)
restart
;;
status)
echo -n "Foreman"
if [ ${FOREMAN_USE_PASSENGER} = 1 ]
then
echo -n " is running under passenger"
echo_passed
echo
RETVAL=1
else
RETVAL=1
for PID in $FOREMAN_PID
do
status -p $PID
RETURN=$? && [ "$RETVAL" != 0 ] && RETVAL=$RETURN
done
fi
;;
condrestart)
if [ -e /var/lock/subsys/foreman ]; then
restart
RETVAL=$?
else
RETVAL=0
fi
;;

*)
echo $"Usage: $prog {start|stop|restart|condrestart}"
exit 1
esac

exit $RETVAL
(4-4/9)