21

我试图进行自动部署,包括 supervisord 和默认设置路径混淆。

/etc/supervisor/supervisor.conf我发现使用的每个部署方案都/etc/supervisor/conf.d/没有任何预设和链接,此外,在通过 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,因此在手册中指定

我尝试了所有可能的方式安装主管,但我无法得到结果。

我知道这只是一些愚蠢的小细节,但我将非常感谢您帮助我保持良好的部署方案。

4

3 回答 3

30

通常默认文件确实是/etc/supervisor.conf.,但Debian 发行版修补了这个(链接到 Debian 提供的 gzipped 补丁)以/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/目录中查找。

Debian安装的默认supervisord.conf文件最后有这个:

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

导致 supervisord 加载放在conf.d目录中的任何额外文件。

于 2012-09-01T08:44:19.297 回答
9

您可能已经通过 pip 安装了主管,因此在

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

优先于补丁版本

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

有关补丁的详细信息,请参阅 Martjin 的回答。简单的解决方案是:

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
于 2016-02-28T01:13:17.433 回答
0

来自ze实际文档:http ://supervisord.org/configuration.html#configuration-file

Supervisor 配置文件通常命名为 supervisord.conf。supervisord 和 supervisorctl 都使用它。如果任一应用程序在没有 -c 选项(用于明确告诉应用程序配置文件名的选项)的情况下启动,应用程序将按指定顺序在以下位置查找名为 supervisord.conf 的文件。它将使用它找到的第一个文件。

  1. $CWD/supervisord.conf
  2. $CWD/etc/supervisord.conf
  3. /etc/supervisord.conf
  4. /etc/supervisor/supervisord.conf(从 Supervisor 3.3.0 开始)
  5. ../etc/supervisord.conf(相对于可执行文件)
  6. ../supervisord.conf(相对于可执行文件)
于 2018-02-01T15:48:12.837 回答