расположение по умолчанию supervisor.conf

Я пытаюсь сделать автоматическое развертывание, включая супервизор, и запутался в пути к настройкам по умолчанию.

Все схемы развертывания, которые я нашел, используют /etc/supervisor/supervisor.conf и /etc/supervisor/conf.d/ без каких-либо предустановок и ссылок, а также после установки пакета supervisor через apt-get этот путь действительно заполняется примером конфигурации.

В этом примере поток выглядит так без каких-либо ссылок и создания чего-то вроде /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')

Но в supervisorctl этот путь не указан по умолчанию, и предполагается, что расположение по умолчанию где-то около /etc/supervisor.conf, как указано в руководстве

Я пытаюсь установить супервизора всеми возможными способами, но я не могу получить результат.

Я знаю, что это всего лишь маленькая глупая деталь, но я буду очень благодарен за вашу помощь в поддержании моей схемы развертывания в хорошем состоянии.


person mrjj    schedule 01.09.2012    source источник


Ответы (3)


Обычно файл по умолчанию действительно /etc/supervisor.conf, но файл дистрибутив Debian исправляет это (ссылка на сжатый патч, предоставленный Debian), чтобы сначала искать /etc/supervisor/supervisor.conf:

--- 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):

Таким образом, с этим патчем супервизор ищет supervisord.conf в локальном каталоге, в подкаталоге etc/, а затем в глобальных каталогах /etc/supervisor/ и /etc/.

Файл supervisord.conf по умолчанию, установленный Debian, имеет в конце следующее:

[include]
files = /etc/supervisor/conf.d/*.conf

заставляя супервизор загружать любые дополнительные файлы, помещенные в каталог conf.d.

person Martijn Pieters    schedule 01.09.2012
comment
Большое тебе спасибо! Я пересмотрел, что изменилось в установке пакета на моем сервере, поэтому причина заключалась в том, что он устанавливается частично (возможно, причина в pythonbrew, может быть, в чем-то еще), а исправление не применяется. - person mrjj; 01.09.2012
comment
Хорошая находка. Мне было интересно, как версия Ubuntu искала /etc/supervisor/supervisor.conf. - person fthinker; 20.09.2013
comment
Это было так полезно для меня, когда я переписывал Dockerfile для использования Alpine вместо Debian Jessie. Все, что я сделал, это добавил RUN printf "\n[include]\nfiles = /etc/supervisor/conf.d/*.conf\n" >> /etc/supervisord.conf в свой Dockerfile. - person Nate Symer; 28.07.2018

Возможно, вы установили супервизор через pip и поэтому имеете неисправленную версию в

/usr/local/lib/python2.7/dist-packages/supervisor/

имеет приоритет над пропатченной версией в

/usr/lib/pymodules/python2.7/supervisor

Подробнее об патче см. Ответ Мартина. Простое решение:

pip uninstall supervisor

Затем повторно запустите установку пакета, если он был установлен только частично:

apt-get install supervisor

Также убедитесь, что ваш /etc/supervisor/supervisord.conf присутствует. Если нет, вам может потребоваться воссоздать его вручную, мой выглядит так:

; 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
person crizCraig    schedule 28.02.2016
comment
не работает на Centos. Нужно ли менять конфигурацию supervisorctl? - person Optimus Prime; 23.08.2018