unix:///var/run/supervisor.sock 在重启主管期间拒绝连接

unix:///var/run/supervisor.sock refused connection during restarting supervisor

当我在 /etc/supervisor/conf.d/ 中创建一个新的 .conf 文件并尝试启动该程序时,它显示了一些错误(致命错误)并经常自行重启。然后我 运行 命令 sudo service supervisor restart 但现在主管也停止了并且无法重新启动它。在解决我的错误期间,nginx 服务器也卡住了。

我花了很多时间恢复它 Alhamdulillah 并在答案部分写下解决方案。

不要完全相信针对您的问题的解决方案。您的问题也可能属于其他问题。

有时 Supervisor 会在您重新启动时显示以下可怕的错误 服务(通过命令 sudo service supervisor restart):

unix:///var/run/supervisor.sock refused connection

尝试用命令 supervisord 诊断问题。您也可以 运行 journalctl -xe.

问题与解决方案:

  1. 当您将新的 .conf 文件写入 /etc/supervisor/conf.d 目录中时,其中包含一些生成错误的语句。 比如,您编写了一些语句,这些语句将 运行 一个脚本。该脚本包含一些 运行sGunicorn 部署 python 网络应用程序的语句。在脚本中,您编写了一条语句来绑定 unix 套接字。但是提到的将创建 unix 套接字的目录不允许在那里创建 .sock 文件。这会导致权限错误。

    演示 gunicorn 命令如下:

SOCKFILE = /home/shamim/python_project/another_directroy/gunicorn.sock
gunicorn ${DJANGO_WSGI_MODULE}:application \
 --name $NAME \
 --bind=unix:$SOCKFILE

如果 another_directory 未授予在其中创建 .sock 文件的权限,则可能会发生错误。所以给它足够的权限从外面在这里创造一些东西。或者,绑定 IP 和端口而不是 unix 套接字(如 127.0.0.1:ANY_PORT)。首先确保该端口未被其他应用程序使用。

  1. 有时,如果在 .conf 文件中使用任何目录路径,但实际上该目录根本不存在,则会发生错误。

  2. 现在 运行 命令 supervisord。 如果在解决上述问题后错误仍然存​​在并且现在显示如下错误 - another program is already listening on a port that one of our HTTP servers is configured to use

    然后 运行 下面的命令来解决这个问题:

    sudo unlink /var/run/supervisor.sock

    如果上面的命令不起作用你应该检查运行 unlink the file at /tmp/supervisor.sock

请记住 nginx 服务器也可能会显示一些错误并且无法执行 如果任何 .conf 文件包含一些语句,其中一个套接字,则重新启动(或启动) 被使用但实际上套接字文件不存在或没有足够的权限执行。

示例:如果您在任何 nginx 文件配置中编写以下代码:

upstream surveyapp_payment_stripe {
    server unix:/home/shamim/python_project/another_directroy/gunicorn.sock fail_timeout=0 weight=5 max_fails=3;
}

如果上述套接字不存在或没有足够的权限,则可能会发生一些错误。

如果此处使用了任何目录路径但根本不存在,Nginx 也会显示错误。此时要 运行 nginx 快速删除 .conf 文件或编辑它的扩展名(创建另一个不同于 .conf 的扩展名类型)。

希望这个解释对以后的人有所帮助。