-
-
Save mattupstate/1791689 to your computer and use it in GitHub Desktop.
an init.d script and generic config for supervisord
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; Sample supervisor config file. | |
[unix_http_server] | |
file=/tmp/supervisor.sock ; (the path to the socket file) | |
;chmod=0700 ; sockef file mode (default 0700) | |
;chown=nobody:nogroup ; socket file uid:gid owner | |
;username=user ; (default is no username (open server)) | |
;password=123 ; (default is no password (open server)) | |
;[inet_http_server] ; inet (TCP) server disabled by default | |
;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) | |
;username=user ; (default is no username (open server)) | |
;password=123 ; (default is no password (open server)) | |
[supervisord] | |
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log) | |
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) | |
logfile_backups=10 ; (num of main logfile rotation backups;default 10) | |
loglevel=info ; (log level;default info; others: debug,warn,trace) | |
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid) | |
nodaemon=false ; (start in foreground if true;default false) | |
minfds=1024 ; (min. avail startup file descriptors;default 1024) | |
minprocs=200 ; (min. avail process descriptors;default 200) | |
;umask=022 ; (process file creation umask;default 022) | |
;user=chrism ; (default is current user, required if root) | |
;identifier=supervisor ; (supervisord identifier, default is 'supervisor') | |
;directory=/tmp ; (default is not to cd during start) | |
;nocleanup=true ; (don't clean up tempfiles at start;default false) | |
;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP) | |
;environment=KEY=value ; (key value pairs to add to environment) | |
;strip_ansi=false ; (strip ansi escape codes in logs; def. false) | |
; the below section must remain in the config file for RPC | |
; (supervisorctl/web interface) to work, additional interfaces may be | |
; added by defining them in separate rpcinterface: sections | |
[rpcinterface:supervisor] | |
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface | |
[supervisorctl] | |
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket | |
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket | |
;username=chris ; should be same as http_username if set | |
;password=123 ; should be same as http_password if set | |
;prompt=mysupervisor ; cmd line prompt (default "supervisor") | |
;history_file=~/.sc_history ; use readline history if available | |
; The below sample program section shows all possible program subsection values, | |
; create one or more 'real' program: sections to be able to control them under | |
; supervisor. | |
;[program:theprogramname] | |
;command=/bin/cat ; the program (relative uses PATH, can take args) | |
;process_name=%(program_name)s ; process_name expr (default %(program_name)s) | |
;numprocs=1 ; number of processes copies to start (def 1) | |
;directory=/tmp ; directory to cwd to before exec (def no cwd) | |
;umask=022 ; umask for process (default None) | |
;priority=999 ; the relative start priority (default 999) | |
;autostart=true ; start at supervisord start (default: true) | |
;autorestart=true ; retstart at unexpected quit (default: true) | |
;startsecs=10 ; number of secs prog must stay running (def. 1) | |
;startretries=3 ; max # of serial start failures (default 3) | |
;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2) | |
;stopsignal=QUIT ; signal used to kill process (default TERM) | |
;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) | |
;user=chrism ; setuid to this UNIX account to run the program | |
;redirect_stderr=true ; redirect proc stderr to stdout (default false) | |
;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO | |
;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) | |
;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) | |
;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) | |
;stdout_events_enabled=false ; emit events on stdout writes (default false) | |
;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO | |
;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) | |
;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10) | |
;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) | |
;stderr_events_enabled=false ; emit events on stderr writes (default false) | |
;environment=A=1,B=2 ; process environment additions (def no adds) | |
;serverurl=AUTO ; override serverurl computation (childutils) | |
; The below sample eventlistener section shows all possible | |
; eventlistener subsection values, create one or more 'real' | |
; eventlistener: sections to be able to handle event notifications | |
; sent by supervisor. | |
;[eventlistener:theeventlistenername] | |
;command=/bin/eventlistener ; the program (relative uses PATH, can take args) | |
;process_name=%(program_name)s ; process_name expr (default %(program_name)s) | |
;numprocs=1 ; number of processes copies to start (def 1) | |
;events=EVENT ; event notif. types to subscribe to (req'd) | |
;buffer_size=10 ; event buffer queue size (default 10) | |
;directory=/tmp ; directory to cwd to before exec (def no cwd) | |
;umask=022 ; umask for process (default None) | |
;priority=-1 ; the relative start priority (default -1) | |
;autostart=true ; start at supervisord start (default: true) | |
;autorestart=unexpected ; restart at unexpected quit (default: unexpected) | |
;startsecs=10 ; number of secs prog must stay running (def. 1) | |
;startretries=3 ; max # of serial start failures (default 3) | |
;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2) | |
;stopsignal=QUIT ; signal used to kill process (default TERM) | |
;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) | |
;user=chrism ; setuid to this UNIX account to run the program | |
;redirect_stderr=true ; redirect proc stderr to stdout (default false) | |
;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO | |
;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) | |
;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) | |
;stdout_events_enabled=false ; emit events on stdout writes (default false) | |
;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO | |
;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) | |
;stderr_logfile_backups ; # of stderr logfile backups (default 10) | |
;stderr_events_enabled=false ; emit events on stderr writes (default false) | |
;environment=A=1,B=2 ; process environment additions | |
;serverurl=AUTO ; override serverurl computation (childutils) | |
; The below sample group section shows all possible group values, | |
; create one or more 'real' group: sections to create "heterogeneous" | |
; process groups. | |
;[group:thegroupname] | |
;programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions | |
;priority=999 ; the relative start priority (default 999) | |
; The [include] section can just contain the "files" setting. This | |
; setting can list multiple files (separated by whitespace or | |
; newlines). It can also contain wildcards. The filenames are | |
; interpreted as relative to this file. Included files *cannot* | |
; include files themselves. | |
[include] | |
files = /etc/supervisor/apps-enabled/* |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/sh | |
### BEGIN INIT INFO | |
# Provides: supervisord | |
# Required-Start: $remote_fs | |
# Required-Stop: $remote_fs | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: Example initscript | |
# Description: This file should be used to construct scripts to be | |
# placed in /etc/init.d. | |
### END INIT INFO | |
# Author: Dan MacKinlay <[email protected]> | |
# Based on instructions by Bertrand Mathieu | |
# http://zebert.blogspot.com/2009/05/installing-django-solr-varnish-and.html | |
# Do NOT "set -e" | |
# PATH should only include /usr/* if it runs after the mountnfs.sh script | |
PATH=/sbin:/usr/sbin:/bin:/usr/bin | |
DESC="supervisord daemon" | |
NAME=supervisord | |
DAEMON=/usr/local/bin/supervisord | |
DAEMON_ARGS="" | |
PIDFILE=/var/run/$NAME.pid | |
SCRIPTNAME=/etc/init.d/$NAME | |
# Exit if the package is not installed | |
[ -x "$DAEMON" ] || exit 0 | |
# Read configuration variable file if it is present | |
[ -r /etc/default/$NAME ] && . /etc/default/$NAME | |
# Load the VERBOSE setting and other rcS variables | |
. /lib/init/vars.sh | |
# Define LSB log_* functions. | |
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. | |
. /lib/lsb/init-functions | |
# | |
# Function that starts the daemon/service | |
# | |
do_start() | |
{ | |
# Return | |
# 0 if daemon has been started | |
# 1 if daemon was already running | |
# 2 if daemon could not be started | |
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ | |
|| return 1 | |
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ | |
$DAEMON_ARGS \ | |
|| return 2 | |
# Add code here, if necessary, that waits for the process to be ready | |
# to handle requests from services started subsequently which depend | |
# on this one. As a last resort, sleep for some time. | |
} | |
# | |
# Function that stops the daemon/service | |
# | |
do_stop() | |
{ | |
# Return | |
# 0 if daemon has been stopped | |
# 1 if daemon was already stopped | |
# 2 if daemon could not be stopped | |
# other if a failure occurred | |
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME | |
RETVAL="$?" | |
[ "$RETVAL" = 2 ] && return 2 | |
# Wait for children to finish too if this is a daemon that forks | |
# and if the daemon is only ever run from this initscript. | |
# If the above conditions are not satisfied then add some other code | |
# that waits for the process to drop all resources that could be | |
# needed by services started subsequently. A last resort is to | |
# sleep for some time. | |
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON | |
[ "$?" = 2 ] && return 2 | |
# Many daemons don't delete their pidfiles when they exit. | |
rm -f $PIDFILE | |
return "$RETVAL" | |
} | |
# | |
# Function that sends a SIGHUP to the daemon/service | |
# | |
do_reload() { | |
# | |
# If the daemon can reload its configuration without | |
# restarting (for example, when it is sent a SIGHUP), | |
# then implement that here. | |
# | |
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME | |
return 0 | |
} | |
case "$1" in | |
start) | |
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" | |
do_start | |
case "$?" in | |
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; | |
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; | |
esac | |
;; | |
stop) | |
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" | |
do_stop | |
case "$?" in | |
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; | |
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; | |
esac | |
;; | |
#reload|force-reload) | |
# | |
# If do_reload() is not implemented then leave this commented out | |
# and leave 'force-reload' as an alias for 'restart'. | |
# | |
#log_daemon_msg "Reloading $DESC" "$NAME" | |
#do_reload | |
#log_end_msg $? | |
#;; | |
restart|force-reload) | |
# | |
# If the "reload" option is implemented then remove the | |
# 'force-reload' alias | |
# | |
log_daemon_msg "Restarting $DESC" "$NAME" | |
do_stop | |
case "$?" in | |
0|1) | |
do_start | |
case "$?" in | |
0) log_end_msg 0 ;; | |
1) log_end_msg 1 ;; # Old process is still running | |
*) log_end_msg 1 ;; # Failed to start | |
esac | |
;; | |
*) | |
# Failed to stop | |
log_end_msg 1 | |
;; | |
esac | |
;; | |
*) | |
#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 | |
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 | |
exit 3 | |
;; | |
esac | |
: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment