supervisor.conf default location

37,929

Solution 1

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.

Solution 2

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
Share:
37,929
mrjj
Author by

mrjj

Web engineer at Parallels

Updated on July 09, 2022

Comments

  • mrjj
    mrjj almost 2 years

    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.

  • mrjj
    mrjj over 11 years
    Thank you a lot! I revised what the package installation changing on my server, so reason was that it is installing partially (maybe pythonbrew is the reason maybe something else) and the patch is not applying.
  • fthinker
    fthinker over 10 years
    Nice find. I was wondering how the ubuntu version was looking for /etc/supervisor/supervisor.conf.
  • Nate Symer
    Nate Symer almost 6 years
    This was so useful for me when rewriting a Dockerfile to use Alpine instead of Debian Jessie. All I did was add RUN printf "\n[include]\nfiles = /etc/supervisor/conf.d/*.conf\n" >> /etc/supervisord.conf to my Dockerfile.
  • Optimus Prime
    Optimus Prime over 5 years
    doesn't seem to work on centos. Do I need to change supervisorctl config?