我有一个使用django和uwsgi的nginx服务器设置。 在不同的virualenv上同时运行多个django应用程序,在nginx侦听的不同端口上有独立的uwsgi进程。 设置工作正常。
我使用pidfile标志来停止uwsgi进程。启动任何uwsgi服务器时,都会创建pidfile,并且可以立即使用下面提供的脚本重新启动而不会出错。
一段时间后,当我再次更新服务器时,pid文件消失了,而uwsgi进程仍在运行。这使这种方法毫无用处。
project_A_uwsgi.ini:
[uwsgi]
master = true
socket = /tmp/stripe_test_uwsgi.sock
chmod-socket = 666
chdir = /home/ubuntu/TestProjects/ProjectA
wsgi-file = /home/ubuntu/TestProjects/ProjectA/ProjectA/wsgi.py
virtualenv = /home/ubuntu/TestProjects/ProjectA/venv
vacuum = true
enable-threads = true
daemonize= /home/ubuntu/TestProjects/ProjectA/uwsgi.log
project_A_server_restart.sh:
#!/bin/sh
DEPLOYMENT_PATH='/home/ubuntu/TestProjects/ProjectA'
. ${DEPLOYMENT_PATH}/venv/bin/activate
uwsgi --stop /home/ubuntu/TestProjects/project_A_uwsgi.pid
uwsgi --ini /home/ubuntu/TestProjects/project_A_uwsgi.ini --pidfile /home/ubuntu/TestProjects/project_A_uwsgi.pid
sudo service nginx restart
删除pidfile的原因可能是什么?我该如何预防?