Skip to content

Instantly share code, notes, and snippets.

@gkrizek
Created June 27, 2016 01:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gkrizek/fb42cb9d5fa05ac99e7f5004d0370be1 to your computer and use it in GitHub Desktop.
Save gkrizek/fb42cb9d5fa05ac99e7f5004d0370be1 to your computer and use it in GitHub Desktop.
Init script for a Meteor application. See: https://blog.gitrandom.com
#!/bin/bash
#
# Service script for running a bundled Meteor application under Forever.
#
. /etc/init.d/functions
NAME=APPNAME
SOURCE_DIR=/var/www/APPNAME
SOURCE_FILE=main.js
SOURCE_FILE_PATH=$SOURCE_DIR/bundle/$SOURCE_FILE
#export system variables
export PORT=3000
export ROOT_URL=http://localhost
export MONGO_URL=mongodb://USERNAME:PASSWORD@localhost:27017/DATABASE
export FOREVER_ROOT=/var/run/forever
#if you require a mail server
export MAIL_URL=smtp://USERNAME:PASSWORD@SERVER:PORT/
#if you want WebSockets disabled
export DISABLE_WEBSOCKETS=1
user=LINUX-USER
pidfile=/var/run/$NAME.pid
lockfile=/var/lock/subsys/$NAME
logfile=/var/log/nodejs/$NAME-node.log
forever=`which forever`
if [ -z "$forever" ]; then
echo "ERROR: can't find forever"
exit 1
fi
export NODE_PATH=$NODE_PATH:/usr/lib/node_modules
start() {
echo -n "Starting $NAME node instance: "
mkdir -p /var/log/nodejs
chown $user /var/log/nodejs
mkdir -p $FOREVER_ROOT
chown $user $FOREVER_ROOT
touch $logfile
chown $user $logfile
touch $pidfile
chown $user $pidfile
$forever start \
-l $logfile \
-a \
-v \
--pidFile $pidfile \
--minUptime 5000 \
--spinSleepTime 2000 \
$SOURCE_FILE_PATH > /dev/null 2>&1
RETVAL=$?
[ $RETVAL -eq 0 ] && touch $lockfile
[ $RETVAL -eq 0 ] && success $"$NAME startup" || failure $"$NAME startup"
echo
}
stop() {
echo -n "Stopping $NAME node instance: "
$forever stop $SOURCE_FILE_PATH > /dev/null 2>&1
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f $lockfile
[ $RETVAL -eq 0 ] && success $"$NAME shutdown" || failure $"$NAME shutdown"
echo
}
rh_status() {
status -p $pidfile $NAME
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
start
;;
stop)
rh_status_q || exit 0
stop
;;
restart)
stop
start
;;
status)
rh_status
;;
*)
echo "Usage: {start|stop|restart|status}"
exit 1
;;
esac
exit $RETVAL
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment