Here is the solution I went with. AWS AMI includes pip for installing Python applications. Here are the setup commands:
$ sudo pip install supervisor
$ echo_supervisord_conf
$ sudo su -
$ echo_supervisord_conf > /etc/supervisord.conf
After you install supervisor you will need to manually build your start-up script to turn the service on and off.
This will vary with your Linux distro, Ubuntu will create an init script for you when you install, other distros like AMI will not. Here is a great resource for various Linux distro init-up scripts:
https://github.com/Supervisor/initscripts
You can then add supervisor to chkconfig to get started automatically on system reboot.
Here is one that works for me:
Path
/etc/init.d/supervisord
Example Init Script for AWS-AMI or RedHat Linux
#!/bin/bash
. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/supervisord ]; then
. /etc/sysconfig/supervisord
fi
supervisorctl=/usr/local/bin/supervisorctl
supervisord=${SUPERVISORD-/usr/local/bin/supervisord}
prog=supervisord
pidfile=${PIDFILE-/tmp/supervisord.pid}
lockfile=${LOCKFILE-/var/lock/subsys/supervisord}
STOP_TIMEOUT=${STOP_TIMEOUT-60}
OPTIONS="${OPTIONS--c /etc/supervisord.conf}"
RETVAL=0
start() {
echo -n $"Starting $prog: "
daemon --pidfile=${pidfile} $supervisord $OPTIONS
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]; then
touch ${lockfile}
$supervisorctl $OPTIONS status
fi
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} -d ${STOP_TIMEOUT} $supervisord
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -rf ${lockfile} ${pidfile}
}
reload() {
echo -n $"Reloading $prog: "
LSB=1 killproc -p $pidfile $supervisord -HUP
RETVAL=$?
echo
if [ $RETVAL -eq 7 ]; then
failure $"$prog reload"
else
$supervisorctl $OPTIONS status
fi
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} $supervisord
RETVAL=$?
[ $RETVAL -eq 0 ] && $supervisorctl $OPTIONS status
;;
restart)
restart
;;
condrestart|try-restart)
if status -p ${pidfile} $supervisord >&/dev/null; then
stop
start
fi
;;
force-reload|reload)
reload
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload}"
RETVAL=2
esac
exit $RETVAL
After you close and save, make it executable by all users:
chmod a+x /etc/init.d/supervisord
You would next want to confirm that the supervisord process is in fact running by running the following command:
ps -fe | grep supervisor
If you don't see /usr/bin/supervisord as a running process then you need to start it up manually:
sudo service supervisord start
Supervisord needs to be started up anytime that the server is rebooted. This can be done similar to how apache is turned on after reboot using chkconfig.
First add it to chkconfig, your start up process list
sudo chkconfig --add supervisord
Then tell chkconfig to turn it on after boot
sudo chkconfig supervisord on