【问题标题】:How to use supervisor start/stop uwsgi(4 processes)如何使用supervisor启动/停止uwsgi(4个进程)
【发布时间】:2016-03-18 00:50:42
【问题描述】:

这是我的centos uwsgi服务设置:

[Unit]
Description=uWSGI for uwsgi
After=syslog.target

[Service]
Restart=always
ExecStart=/usr/share/nginx/ENV/bin/uwsgi --ini /usr/share/nginx/ENV/config/uwsgi.ini
StandardError=syslog
KillSignal=SIGQUIT
Type=forking
PIDFile=/var/run/uwsgi.pid

[Install]
WantedBy=multi-user.target

我想转换为使用 supervisor 来启动/停止 uwsgi 服务
但是还是没有找到解决办法
请帮帮我

这是我的 supervisor.conf :

[program:wiarea-positioning]
command = /usr/share/nginx/ENV/bin/uwsgi --ini /usr/share/nginx/ENV/config/uwsgi.ini
stdout_logfile=/var/log/uwsgi.log
stderr_logfile=/var/log/uwsgi.log
;stopasgroup = true
stopsignal=QUIT

这是我的 uwsgi.ini

[uwsgi]
chdir = /usr/share/nginx/ENV/mysite

env = DJANGO_SETTINGS_MODULE=mysite.settings
module = mysite.wsgi:application
# the virtualenv  
home = /usr/share/nginx/ENV
master = true
thunder-lock=true
processes = 4
pidfile =  /var/run/uwsgi.pid
socket = 127.0.0.1:8001
daemonize = /var/log/uwsgi.log
vacuum = true

【问题讨论】:

  • 为什么要将其移至主管?
  • 因为如果启动失败我想重试
  • 考虑使用uWSGI emperor。它比主管服务好得多,并且它有一些 uwsgi 指定的管理工具,比如将变量传递给所有 vassal,传递套接字文件以进行通信、节流、忠诚度系统、心跳等。它可能会更好地满足您的需求。跨度>

标签: uwsgi supervisord


【解决方案1】:

我认为你的问题(至少其中一个)是这个 uwsgi.ini 行:

daemonize = /var/log/uwsgi.log

请记住,主管基本上只是从命令行运行您的command= 命令,然后等待它退出。如果退出,主管再次运行该命令。

uwsgi daemonize 选项打破了这一点,因为它导致主 uwsgi 命令启动后台进程并立即退出。 Supervisor 不知道后台进程,因此它假定命令失败并尝试重复重新启动它。您可以通过查看/var/log/supervisor/ 文件夹中的日志文件来确认这是发生了什么。

所以,如果你想用 supervisor 运行 uwsgi,你需要去掉 daemonize 选项。之后,您可以尝试只从命令行运行命令以确认 uwsgi 启动并停留在前台。

This blog 有更多关于守护进程和主管的讨论:

【讨论】:

    猜你喜欢
    • 2013-10-30
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多