Supervisor 套接字错误:取消链接过时的套接字 /tmp/supervisor.sock

问题描述 投票:0回答:5

我在共享 Debian 服务器上安装了 Supervisor。当我跑步时:

supervisord -c supervisord.conf
我不断收到此错误,直到我杀死它:
Unlinking stale socket /tmp/supervisor.sock

当我跑步时
supervisorctl status
我得到:
unix:///tmp/supervisor.sock no such file

我的supervisord.conf文件是这样的(我没有改变任何东西):

[unix_http_server]
file=/tmp/supervisor.sock     ; (the path to the socket file)
;chmod=0700                 ; socket file mode (default 0700)

[supervisord]
logfile=/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=/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                 ; (min. avail process descriptors;default 200)

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

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock   ; use a unix:// URL  for a unix socket

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/app/artisan queue:work  --sleep=3 --tries=3
autostart=true
autorestart=true
;user=
numprocs=8
redirect_stderr=true
stdout_logfile= /path/to/app/worker.log

当我 cd 到 /tmp 查找套接字文件时,套接字如下所示: supervisor.sock.824804
运行

supervisord -c supervisord.conf
命令后,服务器会以某种方式随机生成六位数字。我是否必须在 supervisord.config 文件中考虑这个六位数?既然它是随机生成的,我该如何做到这一点?我已经在 macOS Mojave 上安装并运行了 Supervisor,没有任何问题,并且套接字文件只是像 Supervisor.sock 一样被锁定。提前感谢您的任何帮助和建议!

laravel sockets shared-hosting supervisord unlink
5个回答
6
投票

我将

nodaemon = true
设置为
supervisord.conf
,这解决了我的问题。


4
投票

unlink /tmp/supervisor.sock

然后我修复了它“取消链接陈旧的套接字/tmp/supervisord.sock”。


0
投票

这不是问题。只是通知您主管正在更新其套接字文件。


0
投票

我收到了类似的错误,最终不得不更改目录中的文件路径

/lib/systemd/system/supervisor.service

在[服务]下方,您应该看到:

ExecStart=/usr/bin/supervisord ......
ExecStop=/usr/bin/supervisorctl ......
ExecReload=/usr/bin/supervisorctl .......

我将所有这些文件路径更改为 /usr/local/bin/supervisord 等。我猜原因是当您使用 pip install 时,它将配置文件放置在 /usr/local/bin 中,而不是默认的 /usr/local/bin 中是/usr/bin。

希望这有帮助!


0
投票

如果有人使用 Digital Ocean,即 Digital Ocean Apps Platform,即使我的配置文件以以下内容开头,我也会收到此错误:

[supervisord]
nodaemon=true

为了解决这个问题,我更改了 Dockerfile

ENTRYPOINT
以明确针对我的特定配置文件。

旧/不工作

# ...
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
ENTRYPOINT ["/usr/bin/supervisord"]

工作

# ...
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
© www.soinside.com 2019 - 2024. All rights reserved.