Supervisorctl没有遵循我的配置

41

我已经在/home/david/conf/supervisor.conf中设置了以下内容:

[unix_http_server]
file=/home/david/tmp/supervisor.sock

[supervisord]
logfile=/home/david/tmp/supervisord.log  ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB                    ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10                       ; (num of main logfile rotation backups;default 10)
loglevel=info                            ; (log level;default info; others: debug,warn,trace)
pidfile=/home/david/tmp/supervisord.pid  ; (supervisord pidfile;default supervisord.pid)
nodaemon=false                           ; (start in foreground if true;default false)
minfds=1024                              ; (min. avail startup file descriptors;default 1024)
minprocs=200
childlogdir=/home/david/tmp

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///home/david/tmp/supervisor.sock

并开始使用

$ supervisord -c /home/david/conf/supervisor.conf

但是为什么supervisorctl仍然使用默认的http://localhost:9001作为serverurl呢?

$ supervisorctl
http://localhost:9001 refused connection
supervisor>

我检查了/home/david/tmp目录,发现文件supervisord.logsupervisord.pid确实存在。

4个回答

90
您还需要使用-c来运行supervisorctl。从文档中可以看到(我强调的部分):

Supervisor配置文件通常命名为supervisord.conf。它被supervisordsupervisorctl两个应用程序所使用。如果任何一个应用程序在没有-c选项的情况下启动(该选项用于明确告诉应用程序配置文件名称),应用程序将查找以下位置中名为supervisord.conf的文件,以指定的顺序进行查找。它会使用第一个找到的文件。

  1. $CWD/supervisord.conf
  2. $CWD/etc/supervisord.conf
  3. /etc/supervisord.conf

1
如果可以的话,请将您的文件移动到代码片段中列出的搜索目录中,以防忘记添加“-c”,或在您的shell中创建别名。 :) - Burhan Khalid
我遇到了同样的问题,我按照你的建议添加了-c /path/to/xxx.conf,但是出现了一个新的错误“unix:///tmp/supervisor.sock不存在”。为什么会这样? - Kai ZHAO
那是完全不同的问题。请发布一个新的问题。 - Burhan Khalid
是的,它占用了/etc/supervisor.conf而不是我创建的那个文件,然后supervisorctl停止工作,但当我切换到放置配置文件的位置时,它可以正常工作,而无需明确指定配置文件。 - mohit

2
在MacOS中,使用brew进行安装。翻译后:"To install in MacOS, use brew."
 brew install supervisor

然后进入/usr/local/etc/supervisord.ini并注释掉这些行: "Original Answer"的意思是"最初的回答"。
;[unix_http_server]
;file=/usr/local/var/run/supervisor.sock   ; the path to the socket file

"最初的回答":请取消注释以下几行代码:
[inet_http_server]         ; inet (TCP) server disabled by default
port=127.0.0.1:9001        ; ip_address:port specifier, *:port for all iface

最终重新启动守护进程:
brew services restart supervisor

最初的回答:这就是你所需要的。

0
作为解决方案,您可以创建指向配置文件的符号链接。 对于Mac OS,可以这样做:
sudo ln -sv /usr/local/etc/supervisord.ini /etc/supervisord.conf

0
补充上面的有效答案,确保将要监视的应用程序的配置文件放置在supervisor的配置文件夹下,作为名为conf.d的子文件夹。这将取决于您使用的安装supervisor的方法,是默认的软件包管理器还是easy_install。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接