#!/bin/bash # # dm-mongo-express # # Starts the DM Mongo Express daemon # # chkconfig: 345 98 98 # description: controls DM Mongo Express daemon ### BEGIN INIT INFO # Provides: dm-mongo-express # Required-Start: $local_fs $network # Required-Stop: $local_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: Controls DM Mongo Express daemon ### END INIT INFO # Source function library. . /etc/rc.d/init.d/functions # Arguments ACTION=$1 DM_DB_NAME=$2 DM_DB_NAME=${DM_DB_NAME:=dm} # Set root to default if needed. MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd` if [ -z "${DM_ROOT_DIR}" ]; then DM_ROOT_DIR=$MY_DIR/../.. fi # Source environment file. DM_USER=`id -nu` DM_HOST=`hostname -s` DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh if [ ! -f ${DM_ENV_FILE} ]; then echo "Environment file ${DM_ENV_FILE} does not exist." exit 2 fi . ${DM_ENV_FILE} > /dev/null mkdir -p ${DM_INSTALL_DIR}/var/run mkdir -p ${DM_INSTALL_DIR}/var/log DM_MONGODB_HOST=${DM_MONGODB_HOST:=127.0.0.1} DM_MONGODB_PORT=${DM_MONGODB_PORT:=27017} DM_NODE_DIR=${DM_OPT_DIR}/node DM_FOREVER_DIR=${DM_NODE_DIR}/bin/node_modules/forever DM_MONGO_EXPRESS_DIR=${DM_NODE_DIR}/bin/node_modules/mongo-express DM_DAEMON_NAME="${DM_DB_NAME}.MongoExpress" DM_DAEMON_CMD=${DM_FOREVER_DIR}/bin/forever DM_DAEMON_WORK_DIR=${DM_INSTALL_DIR}/var/run/mongo-express DM_DAEMON_PID_FILE=${DM_INSTALL_DIR}/var/run/mongo-express.pid DM_DAEMON_LOG_FILE=${DM_INSTALL_DIR}/var/log/mongo-express.log DM_DAEMON_OUT_FILE=${DM_INSTALL_DIR}/var/log/mongo-express.put DM_DAEMON_ERR_FILE=${DM_INSTALL_DIR}/var/log/mongo-express.err DM_DAEMON_START_ARGS="start \ --sourceDIR $DM_MONGO_EXPRESS_DIR \ --workingDir $DM_DAEMON_WORK_DIR \ -p $MONGO_EXPRESS_FOREVER_PATH \ --pidFile $DM_DAEMON_PID_FILE \ -l $DM_DAEMON_LOG_FILE \ -o $DM_DAEMON_OUT_FILE \ -e $DM_DAEMON_ERR_FILE \ --append \ --killSignal=SIGTERM \ $DM_MONGO_EXPRESS_DIR/app.js" mkdir -p $DM_DAEMON_WORK_DIR # Determine su command SU=su if [ -x /sbin/runuser ]; then SU=runuser fi RETVAL=0 start() { # Check if service is already running status -p $DM_DAEMON_PID_FILE > /dev/null 2>&1 if [ $? -eq 0 ]; then PID=`cat $DM_DAEMON_PID_FILE` echo $"$DM_DAEMON_NAME daemon is already running (pid: $PID)." RETVAL=1 return $RETVAL fi echo -n $"Starting $DM_DAEMON_NAME daemon: " # Check if we're a privileged user if [ `id -u` = 0 -a ${DM_USER} != "root" ]; then $SU -m -c "${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}" ${DM_USER} else ${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS} fi RETVAL=$? [ $RETVAL -eq 0 ] && success $"$DM_DAEMON_NAME startup" || failure $"$DM_DAEMON_NAME startup" echo return $RETVAL } stop() { # Check if service is already running status -p $DM_DAEMON_PID_FILE > /dev/null 2>&1 if [ $? -ne 0 ]; then echo $"$DM_DAEMON_NAME daemon is not running." RETVAL=1 return $RETVAL fi echo -n $"Stopping $DM_DAEMON_NAME daemon: " PID=`cat $DM_DAEMON_PID_FILE` # forever currently cannot seem to stop node apps #$DM_DAEMON_CMD stop $PID killall -KILL node RETVAL=$? [ $RETVAL -eq 0 ] && rm -f $DM_DAEMON_PID_FILE && success $"$DM_DAEMON_NAME shutdown" || failure $"$DM_DAEMON_NAME shutdown" echo return $RETVAL } restart() { stop sleep 1 start } case "$ACTION" in start) start ;; stop) stop ;; restart) restart ;; status) status -p $DM_DAEMON_PID_FILE "$DM_DAEMON_NAME" 2> /dev/null RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|status|restart}" RETVAL=2 esac exit $RETVAL