Supervisor找不到socket.py文件。

41

我正在尝试为Laravel设置队列监听器,但无法正确使用Supervisor。 运行supervisorctl reload时出现以下错误:

error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib/python2.7/socket.py line: 228

该文件确实存在。 如果尝试运行sudo supervisorctl,则会收到此消息unix:///var/run/supervisor.sock no such file

我已尝试重新安装Supervisor,但仍然无法解决问题。 不确定该怎么办。

我正在运行Laravel Homestead(Ubuntu 16.04)。

service supervisor status的结果为:
vagrant@homestead:~/Code$ sudo service supervisor status ● supervisor.service - Unix的Supervisor进程控制系统 Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Thu 2016-12-22 11:06:21 EST; 41s ago Docs: http://supervisord.org Process: 23154 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown (code=exited, status=0/SUCCESS) Process: 23149 ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf (code=exited, status=2) Main PID: 23149 (code=exited, status=2)


听起来像是安装了supervisor但没有运行。尝试service supervisor --status并告诉我们它显示什么(可能是“services”而不是“service”——我没有记住所有的Linux命令)。 - stevendesu
我已经在我的问题中添加了 service supervisor status 的结果。 - Michael
1
首先使用 sudo service supervisor start 启动 Supervisor,然后使用 sudo supervisorctl 命令。 - baikho
16个回答

45

当你在supervisor目录中时,应该运行sudo service supervisor start
对我有效。


3
这也适用于CentOS:对我来说,“sudo systemctl start supervisord”有效。 - glinda93
哪一个是主管的办公室? - undefined

28

2020年更新

在使用下面的解决方案之前,请尝试在终端中运行sudo service supervisor start。我发现有时候问题出现在 supervisor 没有运行时,这并不复杂。

我正在使用 Ubuntu 18.04。我遇到了同样的问题,重新安装 supervisor 没有解决我的问题。

最终我完全删除了 conf.d 目录并使用新的配置文件重新创建它。在尝试此操作之前,请确保备份您的配置:

  1. sudo rm -rf /etc/supervisor/conf.d/
  2. sudo mkdir /etc/supervisor/conf.d
  3. sudo nano /etc/supervisor/conf.d/my-file.conf
  4. 将您的配置复制并粘贴到新文件中。

sudo supervisorctl reread 又可以工作了。


12

在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 你可以看到最后一行中硬编码了配置文件的命令


    这是最好的解决方案。我在重新安装supervisor时遇到了问题,没有进行卸载。我只需删除文件<code>/etc/supervisord.conf</code>,问题就得到了解决。 非常感谢您提供的解决方案。 - Nham Nguyen

    5

    没有任何答案能够帮助我,问题是因为我没有遵循 supervisor的文档。 我没有运行 echo_supervisord_conf 命令来生成配置文件。

    我在Ubuntu 18.04上执行了以下步骤:

    安装supervisor(不使用pip):

    1. sudo apt-get install supervisor
    2. echo_supervisord_conf > /etc/supervisord.conf (需要root权限:首先运行sudo -i,然后再运行echo_supervisord_conf > /etc/supervisord.conf
    3. 更改python依赖项为python2

    (Depends: python-pkg-resources, init-system-helpers (>= 1.18~), python-meld3, python:any (<< 2.8), python:any (>= 2.7.5-5~)

    在这些文件中:/usr/bin/supervisord | /usr/bin/supervisorctl | /usr/bin/echo_supervisord_conf,只需将第一行从#!/usr/bin/python更改为#!/usr/bin/python2

    1. 运行 supervisord
    2. 完成

    希望能有所帮助!


    5

    我遇到了非常类似的问题(Ubuntu 18.04),在搜索了类似的帖子后却毫无结果,所以在这里提供一些更为全面的答案。

    缺少套接字文件或套接字错误仅表明supervisor未运行。如果简单的重启不能解决问题,那么可能是1.没有安装,或者2.无法启动。在我的情况下,直到我运行了以下命令(-n在前台运行)才发现没有日志记录到supervisor.log文件中,以便我知道为什么它会失败,结果发现有一个已删除项目的配置文件残留。

    /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
    

    我删除了conf.d文件夹中的坏文件或剩余文件,并使用sudo service supervisor start重新启动后,一切都正常了。

    以下是您可以采取的详细步骤:

    1. 检查是否安装了supervisor?运行命令dpkg -l | grep supervisor。如果没有,请使用sudo apt install supervisor重新安装。
    2. 停止所有正在运行的supervisor实例:systemctl stop supervisor。可以通过命令ps aux | grep supervisor找到残留的supervisor进程,然后使用kill -9 PID命令杀死它们。
    3. 确认supervisor.conf文件是否位于正确的位置/etc/supervisor/supervisor.conf,且没有语法错误。可以通过从软件包中重新安装解决此问题。
    4. 将conf.d/文件夹中的特定文件暂时移出该文件夹,尝试在没有其他配置文件的情况下启动。如果它能够成功启动,使用sudo service supervisor start,则您的项目.conf文件中存在错误的可能性。
    5. 使用sudo service supervisor status命令检查其状态。
    6. 逐个将.conf文件移回conf.d/文件夹中,并使用sudo service supervisor restart重新启动。在每个步骤之间都要使用sudo service supervisor status进行检查。如果启动失败,则说明特定的.conf文件存在问题,并且需要询问具体的帮助。
    7. 使用supervisorctl status命令检查所有内容是否正在运行,如果没有,请使用supervisorctl start all命令启动。

    3
    在Centos 7上,我使用以下命令...
    supervisord -c /path/to/supervisord.conf
    

    接着是...

    supervisorctl -c /path/to/supervisord.conf
    

    这将解决“.sock文件未找到”的错误。现在你需要终止使用旧进程的方法...
    ps aux|grep gunicorn
    

    使用以下命令杀死有问题的进程...
    kill <pid>
    

    再次回到这个问题上来...

    supervisorctl -c /path/to/supervisord.conf
    

    如果您的配置正确,Supervisor 现在应该正常运行。


    3

    当我按照官方文档尝试时,遇到了“python文件未找到error, code=exited, status=2”的错误,而且还是相同的错误。 我已经尝试了很多解决方案来解决我的laravel应用程序问题。

    但最终,我尝试了自己的解决方案。

    以下是代码示例:

    [program:dev-worker]
    process_name=%(program_name)s_%(process_num)02d
    command=php /var/www/html/example.com/artisan queue:work --sleep=3 --tries=3
    autostart=true
    autorestart=true
    user=ubuntu
    numprocs=8
    redirect_stderr=true
    stdout_logfile=/var/www/html/example.com/storage/logs/laravel.log
    stopwaitsecs=3600
    

    参考: https://laravel.com/docs/7.x/queues#supervisor-configuration

    这篇文章介绍如何使用Supervisor监控Laravel队列进程。Supervisor是一个进程控制系统,可以在Laravel应用程序崩溃或服务器重新启动时自动重启队列进程,从而确保队列进程持续运行,并及时处理队列任务。要使用Supervisor监控队列进程,您需要创建一个Supervisor配置文件并将其放置在适当的位置。


    2

    最终我决定彻底卸载supervisor,重新安装并重写配置文件。我肯定是在操作过程中犯了错误,但并没有发现。


    2
    如果您选择这种方式,请确保备份您的配置文件:cp -r /etc/supervisor/conf.d/ ~/supervisor/ - nwaweru

    2

    如果你运行sudo service supervisor status命令后得到以下信息:

    ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf (code=exited, status=2)

    尝试运行/usr/bin/supervisord,它会给出明确的错误提示。


    2

    您可以尝试删除supervisor的所有相关文件夹并完全卸载supervisor。

    sudo rm -rf /var/log/supervisor/supervisord.log 
    sudo rm -rf /etc/supervisor/conf.d/ 
    

    完成此操作后,请通过以下方式重新安装supervisor:

    sudo apt install supervisor
    

    现在,您可以正确地运行。使用以下命令进行检查:

    sudo systemctl status supervisor
    

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