Im trying to make automatic deployment including supervisord and confused by default settings path.
Every deployment scheme I found use /etc/supervisor/supervisor.conf
and /etc/supervisor/conf.d/
without any presettings and links, also, after installing supervisor package via apt-get this path is really filled by example configuration.
In this example flow looks like this without any links and creation anything like /etc/supervisor.conf
:
sudo('apt-get -y install supervisor')
put('config/supervisor_gunicorn.conf', '/etc/supervisor/conf.d/gunicorn.conf', use_sudo=True)
sudo('supervisorctl reload')
But in supervisorctl
this path is not specified as default and it's assumed that default location somewhere aroud /etc/supervisor.conf
so as specified in manual
I've try to install supervisor all possible ways but I can't get result.
I know that this is just small stupid detail, but I will be very grateful for your assistance in keeping my deployment scheme good.
supervisord. conf is a Windows-INI-style (Python ConfigParser) file. It has sections (each denoted by a [header]) and key / value pairs within the sections. The sections and their allowable values are described below.
Step 1 - Installation The supervisor service runs automatically after installation. You can check its status: sudo systemctl status supervisor.
supervisorctl - supervisorctl Documentation Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems. It shares some of the same goals of programs like launchd, daemontools, and runit.
Normally the default file is indeed /etc/supervisor.conf
, but the Debian distribution patches this (link to the gzipped patch as provided by Debian) to look for /etc/supervisor/supervisor.conf
first:
--- supervisor-3.0a8.orig/src/supervisor/options.py
+++ supervisor-3.0a8/src/supervisor/options.py
@@ -105,7 +105,7 @@
def default_configfile(self):
"""Return the name of the found config file or raise. """
paths = ['supervisord.conf', 'etc/supervisord.conf',
- '/etc/supervisord.conf']
+ '/etc/supervisor/supervisord.conf', '/etc/supervisord.conf']
config = None
for path in paths:
if os.path.exists(path):
So with that patch, supervisor looks for supervisord.conf
in the local directory, in the etc/
subdirectory, then in the global /etc/supervisor/
and /etc/
directories.
The default supervisord.conf
file installed by Debian has this at the end:
[include]
files = /etc/supervisor/conf.d/*.conf
causing supervisord to load any extra files put in the conf.d
directory.
You may have installed supervisor via pip and therefore have the unpatched version in
/usr/local/lib/python2.7/dist-packages/supervisor/
taking precedance over the patched version in
/usr/lib/pymodules/python2.7/supervisor
See Martjin's answer for details on the patch. The simple solution is to:
pip uninstall supervisor
Then rerun the package install in case it was only partially installed:
apt-get install supervisor
Also make sure your /etc/supervisor/supervisord.conf
is present. If not, you may need to manually recreate it, mine looks like this:
; supervisor config file
[unix_http_server]
file=/var/run//supervisor.sock ; (the path to the socket file)
chmod=0700 ; sockef file mode (default 0700)
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)
; 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:///var/run//supervisor.sock ; use a unix:// URL for a unix socket
; 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/conf.d/*.conf
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With