【问题标题】:Supervisorctl not respecting my configurationSupervisorctl 不尊重我的配置
【发布时间】:2013-06-05 00:26:08
【问题描述】:

我在/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 确实存在。

【问题讨论】:

    标签: supervisord supervisord


    【解决方案1】:

    您也应该运行 supervisorctl-c。来自文档(我的重点):

    Supervisor 配置文件通常被命名为 supervisord.conf。它被supervisordsupervisorctl 使用。 如果 任一应用程序都在没有 -c 选项的情况下启动(该选项 用于告诉应用程序配置文件名 显式),应用程序将寻找一个名为 supervisord.conf 在以下位置,在指定的 命令。它将使用找到的第一个文件。

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

    【讨论】:

    • 如果可以,请将文件移动到 sn-p 中列出的搜索目录,以免忘记添加 -c,或在 shell 中创建别名。 :)
    • 我遇到了同样的问题,我按照你的建议添加-c /path/to/xxx.conf,但它出现了一个新错误“unix:///tmp/supervisor.sock no such file”。为什么?
    • 这完全是另一个问题。请发布一个新问题。
    • 是的,它占用了 /etc/supervisor.conf 而不是我创建的那个,然后 supervisorctl 停止工作,但是当我将目录更改到放置配置文件的位置时,它可以正常工作而无需提及明确的配置文件。
    【解决方案2】:
    • MacOS中,使用brew安装
     brew install supervisor
    
    • 然后转到/usr/local/etc/supervisord.ini 并评论这些行:
    ;[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
    

    这就是你所需要的。

    【讨论】:

      【解决方案3】:

      要添加到上面的有效答案,请确保将要监视的应用程序的配置文件作为名为 conf.d 的子文件夹放在主管的配置文件夹下。这将取决于您使用什么方法安装supervisor、默认包管理器或easy_install。

      【讨论】:

        【解决方案4】:

        作为解决方案,您可以对配置文件进行符号链接。 对于 Mac OS 就像这样:

        sudo ln -sv /usr/local/etc/supervisord.ini /etc/supervisord.conf

        【讨论】:

          猜你喜欢
          • 2019-03-10
          • 1970-01-01
          • 2018-05-28
          • 2020-03-06
          • 2013-10-01
          • 1970-01-01
          • 2017-12-10
          • 2019-08-26
          • 1970-01-01
          相关资源
          最近更新 更多