如何使用主管启动/停止uwsgi(4个进程)

时间:2016-03-18 00:50:42

标签: uwsgi supervisor

这是我的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

我想转换为使用主管启动/停止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

1 个答案:

答案 0 :(得分:0)

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

daemonize = /var/log/uwsgi.log

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

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

因此,如果您想使用supervisor运行uwsgi,则需要删除daemonize选项。之后,您可以尝试从命令行运行命令以确认uwsgi启动并保持在前台。

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

相关问题