supervisor.conf default location

2019-03-14 23:17发布

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.

3条回答
一夜七次
2楼-- · 2019-03-14 23:52

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.

查看更多
甜甜的少女心
3楼-- · 2019-03-15 00:06

From ze actual documentation: http://supervisord.org/configuration.html#configuration-file

The Supervisor configuration file is conventionally named supervisord.conf. It is used by both supervisord and supervisorctl. If either application is started without the -c option (the option which is used to tell the application the configuration filename explicitly), the application will look for a file named supervisord.conf within the following locations, in the specified order. It will use the first file it finds.

  1. $CWD/supervisord.conf
  2. $CWD/etc/supervisord.conf
  3. /etc/supervisord.conf
  4. /etc/supervisor/supervisord.conf (since Supervisor 3.3.0)
  5. ../etc/supervisord.conf (Relative to the executable)
  6. ../supervisord.conf (Relative to the executable)
查看更多
太酷不给撩
4楼-- · 2019-03-15 00:15

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
查看更多
登录 后发表回答