etc/librecat.initd
#!/bin/sh
#
# chkconfig: 345 99 01
# description: Librecat application
# pidfile: /var/run/plackup.librecat.pid
#
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
[ "$NETWORKING" = "no" ] && exit 0
SCRIPT="$(basename $0)"
PID=/var/run/plackup.librecat.pid
CARTON=/home/vagrant/.plenv/shims/carton
SERVER_PORT=5000
SERVER_WORKERS=15
SERVER_USER="vagrant"
SERVER_GROUP="vagrant"
DANCER_TMP="/tmp"
DANCER_DIR="/home/vagrant/LibreCat"
DANCER_APP="$DANCER_DIR/bin/app.pl"
# If the LibreCat/config.yml is in a layers directory, use this line:
# export LIBRECAT_LAYERS="/opt/librecat-ugent"
PLACK_ENV="deployment"
ACCESS_LOG="/var/log/librecat/access.log"
ERROR_LOG="/var/log/librecat/error.log"
starman_args="--pid $PID --workers $SERVER_WORKERS --user $SERVER_USER --group $SERVER_GROUP --error-log $ERROR_LOG --max-requests 20"
plackup_args="-E $PLACK_ENV -p $SERVER_PORT --access-log $ACCESS_LOG -s Starman $starman_args -D"
lock_file=/var/lock/subsys/plackup.librecat
do_start()
{
if [ ! -f "$lock_file" ] ; then
cd $DANCER_DIR
echo -n $"Starting $webapp: "
TMPDIR="${DANCER_TMP}" DANCER_CONFDIR="${LIBRECAT_LAYERS}" $CARTON exec plackup $plackup_args -a $DANCER_APP
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
touch $lock_file
echo_success
else
echo_failure
fi
echo
else
echo "$SCRIPT is locked."
RETVAL=1
fi
}
do_stop()
{
echo -n $"Stopping $SCRIPT: "
if [ -f $PID ]; then
kill `cat $PID` > /dev/null 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
rm -f $lock_file
echo_success
else
echo_failure
fi
else
echo_failure
fi
echo
}
do_status()
{
kill -0 `cat $PID` > /dev/null 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "$SCRIPT is running"
else
echo "$SCRIPT is not running"
fi
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart)
do_stop
do_start
;;
status)
do_status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
RETVAL=1
esac
exit $RETVAL