【问题标题】:nginx and supervisor setup in UbuntuUbuntu中的nginx和supervisor设置
【发布时间】:2012-05-29 18:40:19
【问题描述】:

我正在按照本教程http://ijcdigital.com/blog/django-gunicorn-and-nginx-setup/ 使用 django-gunicorn-nginx 设置,直到 nginx 设置,它正在工作。然后我安装了主管,配置了它,然后我重新启动服务器并检查,它显示 502 bad gateway。我正在使用 Ubuntu 12.04 LTS

/etc/supervisor/conf.d/qlimp.conf

[program: qlimp]
directory = /home/nirmal/project/qlimp/qlimp.sh
user = nirmal
command = /home/nirmal/project/qlimp/qlimp.sh
stdout_logfile = /path/to/supervisor/log/file/logfile.log
stderr_logfile = /path/to/supervisor/log/file/error-logfile.log

然后我重新启动主管并运行此命令 $ supervisorctl start qlimp 并收到此错误

unix:///var/run/supervisor.sock no such file

我的主管设置有什么问题吗?

谢谢!

【问题讨论】:

    标签: python django apache nginx supervisord


    【解决方案1】:

    没有套接字文件可能意味着主管没有运行。它未运行的一个原因可能是您的 qlimp.conf 文件中存在某种错误。如果你做一个

    sudo service supervisor start
    

    您可以查看是否是这种情况。如果主管已经在运行,它会说。如果它捕捉到错误,它通常会给你一个比 supervisorctl 更有帮助的错误信息。

    【讨论】:

    • 我遇到了同样的错误。你的命令修复了它。如何调试 qlimp.conf 文件中的错误?
    • 当我运行这个我得到IOError: [Errno 13] Permission denied: '/var/log/supervisor/supervisord.log'
    • 原来我在[supervisord]下指定了一个非root用户
    • 嗨@nueverest 你如何解决权限被拒绝的问题?
    • @sulaiman 确保您在 [supervisord] 下查看您的 conf 文件,其中指定的用户必须具有 root 访问权限。
    【解决方案2】:

    我也遇到了和你一样的问题,经过几次,解决方法来了:

    1. 首先删除 apt-get supervisor 版本:

        sudo apt-get remove supervisor
      
    2. 杀死后端主管进程:

       sudo ps -ef | grep supervisor
      
    3. 然后获取最新版本(apt-get 版本为 3.0a8):

      sudo easy_install(pip install) supervisor==3.0b2 
      
    4. 回显配置文件(root权限):

      echo_supervisord_conf > /etc/supervisord.conf
      

    5.启动supervisord:

       sudo supervisord
    

    6.输入supervisorctl:

       sudo supervisorctl
    

    什么都做了!玩得开心!

    【讨论】:

    • 当我运行sudo echo_supervisord_conf > /etc/supervisord.conf 我得到Permission Denied
    • @nu everest 所以你必须以超级管理员身份运行。
    • 所以你必须以超级管理员身份运行。仍然无法正常工作,还有其他建议吗? @场景
    【解决方案3】:

    试试这个

    cd /etc/supervisor
    sudo supervisord
    sudo supervisorctl restart all
    

    【讨论】:

    • 这对我有用,因为主管没有作为服务安装在我的服务器上。我需要在使用supervisord 重新启动后手动启动它,然后才能使用supervisorctl。谢谢阿尼尔
    • 为我工作,我在 docker 中运行了这个,并且 sock 文件看起来好像不是在开始时创建的,即使 supervisord 在 ps 列表中。 “sudo supervisord” 似乎踢了它来创建它,尽管它抛出了一条警告消息,我正在以 root 身份运行它
    【解决方案4】:

    您确定 supervisord 已安装并正在运行吗? /var/run/supervisor.sock 是否有套接字文件?

    错误表明控制 CLI 的 supervisorctl 无法到达 UNIX 套接字以与守护程序 supervisord 通信。

    您还可以检查/etc/supervisor/supervisord.conf 并查看unix_http_serversupervisorctl 部分的值是否匹配。

    请注意,这是一个 Ubuntu 级别的问题,而不是 Python、Django 或 nginx 的问题,因此这个问题可能属于 ServerFault。

    【讨论】:

    • 没有。 /var/run 中没有 supervisor.sock 文件 为什么会这样?
    • 如果/etc/supervisor/supervisord.confunix_http_server 部分有一个指向/var/run/supervisor.sock 的文件条目,那么supervisord 没有运行或安装。运行sudo /etc/init.d/supervisor start 看看它是否会启动。
    • 我尝试运行sudo /etc/init.d/supervisor start,但在找不到path/to 中出现错误。然后我改成/etc/supervisor/log/现在我得到了supervisor.sock文件..重新启动然后检查。仍然得到 502 bad gateway
    • 对,现在你有一个 nginx 配置问题或者你的上游没有运行。尝试直接访问 localhost:8001。
    【解决方案5】:

    在 Ubuntu 16+ 上,这似乎是由切换到 systemd 引起的,此解决方法可能会修复新服务器:

     # Make sure Supervisor comes up after a reboot.
     $ sudo systemctl enable supervisor
    
     # Bring Supervisor up right now.
     $ sudo systemctl start supervisor
    

    然后检查您的 iconic.conf [My example] 的状态

    $ sudo supervisorctl status iconic
    

    PS:确保 gunicorn 在运行时不会出现任何问题。

    【讨论】:

      【解决方案6】:

      该错误可能是由于您没有权限。 也许你可以通过这种方式修复错误,打开你的终端,输入vim /etc/supervisord.conf编辑文件,搜索行

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

      并删除字符串;file=/tmp/supervisor.sock;chmod=0700 开头的分号,重新启动您的supervisord。我建议你这样做。

      【讨论】:

        【解决方案7】:

        确保在/etc/supervisor.conf 中存在以下两个部分

        [unix_http_server]
        file=/tmp/supervisor.sock ; path to your socket file
        
        [rpcinterface:supervisor]
        supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
        

        【讨论】:

        • socket文件的路径是什么?
        【解决方案8】:

        你可以这样做:-

        sudo touch /var/run/supervisor.sock
        sudo chmod 777 /var/run/supervisor.sock
        sudo service supervisor restart
        

        绝对有效,试试这个。

        【讨论】:

          【解决方案9】:

          就我而言,Supervisor 没有运行。要发现我运行的问题:

          sudo systemctl status supervisor.service
          

          问题是我的日志指向一个不存在的目录,所以我只需要创建它。

          希望对你有帮助:)

          【讨论】:

          • 谢谢!这为我解决了它。其实supervisor.conf没问题,但是conf.d文件夹中的一个服务文件指向了一个不存在的目录。
          【解决方案10】:
          touch /var/run/supervisor.sock
          sudo supervisord -c /etc/supervisor/supervisord.conf
          

          之后 supervisorctl 全部重启

          如果你想监听监控端口

          ps -ef | grep supervisord
          

          如果你想杀死进程

          kill -s SIGTERM 2503  
          

          【讨论】:

            【解决方案11】:

            创建一个conf文件并在下面添加行

            请记住,为了使用 Nginx,您必须禁用系统启动时自动启动,这是您在安装 Nginx 时激活的。

            https://askubuntu.com/questions/177041/nginx-disable-autostart

            注意:所有主管进程必须处于“关闭守护进程”模式,才能与主管一起工作

            [program:nginx]
            command=/usr/sbin/nginx -g "daemon off;"
            autostart=true
            autorestart=true
            startretries=5
            stopasgroup=true
            stopsignal=QUIT
            numprocs=1
            startsecs=0
            process_name=WebServer(Nginx)
            stderr_logfile=/var/log/nginx/error.log
            stderr_logfile_maxbytes=10MB
            stdout_logfile=/var/log/nginx/access.log
            stdout_logfile_maxbytes=10MB
            

            sudo supervisorctl reread && sudo supervisorctl update

            【讨论】:

              猜你喜欢
              • 2020-07-09
              • 2011-08-22
              • 2015-10-18
              • 2015-04-21
              • 2013-03-06
              • 1970-01-01
              • 2020-12-26
              • 1970-01-01
              • 2018-03-27
              相关资源
              最近更新 更多