主管套接字错误问题

108
$ supervisorctl reread
error: <class 'socket.error'>, [Errno 111] Connection refused: file: /usr/lib64/python2.6/socket.py line: 567

我正试图在我的生产环境中配置supervisor,但是遇到了这个错误。supervisor日志文件为空。

当我只输入supervisorctl时,它会抱怨:

http://localhost:9001 refused connection

当前没有任何程序在9001端口监听,执行lsof | grep TCP命令返回空结果。


请查看此链接:https://dev59.com/hVgR5IYBdhLWcg3wd9K5#66931708 - Arash Younesi
7个回答

190

在使用 supervisorctl 前,您必须先启动 supervisord。在我的情况下:

sudo supervisord -c /etc/supervisor/supervisord.conf
sudo supervisorctl -c /etc/supervisor/supervisord.conf

3
你不应该使用sudo supervisorctl,但我遇到了权限问题,导致我放弃解决这个问题。 - kelorek
1
我和kelorek有相同的问题,但是上面的命令对我没有起作用。 - Charlesliam
当你按下回车键时会返回什么? - kelorek
6
http://192.168.111.100:9001 refused connection 的意思是无法连接到指定的网址,可能是网站出现了问题或者网络出现了故障。 - Charlesliam
你不应该指定配置文件路径。两个工具应该使用相同的默认路径。如果它们没有,那么你可能安装有损坏。 - Cerin
这并没有解决问题,但是向我展示了确切的错误,实际上是由于Django的supervisor配置中未创建日志文件。 - Pranaysharma

42

如果您使用自定义路径启动了supervisord,例如这样:

sudo supervisord -c /mypath/supervisord.conf

那么你也应该使用相同的参数启动supervisorctl,就像这样:

sudo supervisorctl -c /mypath/supervisord.conf

13

如果您使用相对 URL 启动 supervisor,然后尝试从不同的目录运行 supervisorctl,就可能会出现此问题。

例如:

supervisord -c supervisord.conf
supervisorctl start someapp ## works 
cd somedirectory
supervisorctl restart someapp ## http://localhost:9001 refused connection

解决方法是始终使用绝对路径。例如:

好的:

supervisord -c /etc/supervisor/supervisord.conf

不好的:

supervisord -c supervisord.conf

6
请执行以下操作:

sudo service supervisor start

之后一切都会像之前一样正常 - 1b版本存在问题。

sudo supervisorctl reload


5

如果使用旧版本的supervisord.conf文件,则会出现此问题。 较新版本的 supervisor 使用不同的配置文件。 上述解决方案无效。 在这种情况下,您只需要重新生成配置文件即可。

echo_supervisord_conf > /etc/supervisord.conf

希望它能帮助到某些人。


2

在Ubuntu 18.04中使用分发包

你可能和我犯了同样的错误,创建了配置文件/etc/supervisord.conf,而我的服务管理器(systemd)正在使用配置文件/etc/supervisor/supervisord.conf

sudo rm /etc/supervisord.conf

或者

sudo mv /etc/supervisord.conf /etc/supervisor/supervisord.conf

如果你想保留它

现在你可以运行sudo supervisorctl


为什么?

当你运行supervisorctl时,它首先搜索位于/etc/supervisord.conf的配置文件,如果不存在,则会搜索包的默认文件/etc/supervisor/supervisord.conf,这是systemd实际运行的文件。

Systemd始终使用文件/etc/supervisor/supervisord.conf,无论其他文件是否存在。

您可以通过运行sudo systemctl status supervisor来检查systemd使用哪个文件

enter image description here 您可以看到最后一行的命令中硬编码了配置文件


-1

无论是 supervisord 还是 supervisorctl,都需要使用绝对路径的配置文件路径来使用 -c 参数,请确保两个命令都使用相同的配置文件启动。


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