在Ubuntu中设置nginx和supervisor

时间:2012-05-23 08:25:45

标签: python django apache nginx supervisord

我正在使用django-gunicorn-nginx设置,遵循本教程http://ijcdigital.com/blog/django-gunicorn-and-nginx-setup/ Upto nginx设置,它正在运行。然后我安装了主管,配置它然后我重启我的服务器并检查,它显示502坏网关。我正在使用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

我的主管设置有问题吗?

谢谢!

11 个答案:

答案 0 :(得分:65)

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

sudo service supervisor start

你可以看出是否是这种情况。如果主管已经在运行,它会说。如果它正在捕获错误,它通常会给你一个比supervisorctl更有用的错误消息。

答案 1 :(得分:25)

我遇到了和你一样的问题,经过好几次,解决方案就出现了:

  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 premission):

    echo_supervisord_conf > /etc/supervisord.conf
    
  5. 5.开始监督:

       sudo supervisord
    

    6.进入supervisorctl:

       sudo supervisorctl
    

    一切都已完成!玩得开心!

答案 2 :(得分:17)

试试这个

cd /etc/supervisor
sudo supervisord
sudo supervisorctl restart all

答案 3 :(得分:12)

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

该错误表示控制CLI的supervisorctl无法访问UNIX套接字以与守护进程supervisord进行通信。

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

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

答案 4 :(得分:9)

在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 [我的例子] 的状态

$ sudo supervisorctl status iconic

enter image description here

PS:确保gunicorn在跑步时不会有任何问题。

答案 5 :(得分:4)

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

[unix_http_server]
; file = / tmp / supervisor.sock; (套接字文件的路径)
; chmod = 0700;套接字文件模式(默认为0700)

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

答案 6 :(得分:2)

确保在/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

答案 7 :(得分:2)

您可以这样做: -

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

这绝对有用,试试这个。

答案 8 :(得分:2)

在我的情况下,主管没有运行。要发现我运行的问题:

sudo systemctl status supervisor.service

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

我希望它有所帮助:)

答案 9 :(得分:0)

touch /var/run/supervisor.sock
sudo supervisord -c /etc/supervisor/supervisord.conf

之后     supervisorctl重新启动所有

如果你想听主管端口

ps -ef | grep supervisord

如果你想杀死进程

kill -s SIGTERM 2503  

答案 10 :(得分:0)

创建一个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

enter image description here