这是我的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
答案 0 :(得分:0)
我认为你的问题(至少其中一个)就是这个uwsgi.ini行:
daemonize = /var/log/uwsgi.log
请记住,supervisor基本上只是从命令行运行command=
命令,并等待它退出。如果它退出,主管再次运行该命令。
uwsgi daemonize
选项会破坏它,因为它会导致主uwsgi命令启动后台进程并立即退出。主管不知道后台进程,因此假设命令失败并尝试重复重启。您可以通过查看/var/log/supervisor/
文件夹中的日志文件来确认这是发生了什么。
因此,如果您想使用supervisor运行uwsgi,则需要删除daemonize选项。之后,您可以尝试从命令行运行命令以确认uwsgi启动并保持在前台。
This blog有更多关于守护进程和主管的讨论: