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
# 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_FOREVER_DIR=${DM_NODE_DIR}/bin/node_modules/forever
DM_MONGO_EXPRESS_DIR=${DM_NODE_DIR}/bin/node_modules/mongo-express
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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