Skip to content
Snippets Groups Projects
dm-mongo-express 3.65 KiB
Newer Older
#!/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
sveseli's avatar
sveseli committed
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

sveseli's avatar
sveseli committed
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`
sveseli's avatar
sveseli committed
    # 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