Deployment with Supervisord
Supervisord is a very useful process manager implemented in Python. Supervisord can change your non-daemon application into a daemon application. The application needs to be a non-daemon app. So if you want to use Supervisord to manage nginx, you need to set daemon off to run nginx in non-daemon mode.
Install Supervisord
-
install setuptools
wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg sh setuptools-0.6c11-py2.7.egg easy_install supervisor echo_supervisord_conf >/etc/supervisord.conf mkdir /etc/supervisord.conf.d
-
config
/etc/supervisord.conf
[include] files = /etc/supervisord.conf.d/*.conf
-
Create new application to be managed
cd /etc/supervisord.conf.d vim beepkg.conf
Configurations:
[program:beepkg] directory = /opt/app/beepkg command = /opt/app/beepkg/beepkg autostart = true startsecs = 5 user = root redirect_stderr = true stdout_logfile = /var/log/supervisord/beepkg.log
Supervisord Manage
Supervisord provides two commands, supervisord and supervisorctl:
- supervisord: Initialize Supervisord, run configed processes
- supervisorctl stop programxxx: Stop process programxxx. programxxx is configed name in [program:beepkg]. Here is beepkg.
- supervisorctl start programxxx: Run the process.
- supervisorctl restart programxxx: Restart the process.
- supervisorctl stop groupworker: Restart all processes in group groupworker
- supervisorctl stop all: Stop all processes. Notes: start, restart and stop won’t reload the latest configs.
- supervisorctl reload: Reload the latest configs.
- supervisorctl update: Reload all the processes who’s config has changed.
Notes: The processes stopped by
stop
manually won’t restart after reload or update.