我的堆栈是使用spawn-fcgi运行python web.py fast-cgi脚本的nginx。我使用runit来保持进程作为守护进程活着。我正在使用spaIX-fcgi的unix套接字。
以下是我在/ etc / sv / myserver中名为myserver的runit脚本,其中运行文件位于/ etc / sv / myserver / run中。
exec spawn-fcgi -n -d /home/ubuntu/Servers/rtbTest/ -s /tmp/nginx9002.socket -u www-data -f /home/ubuntu/Servers/rtbTest/index.py >> /var/log/mylog.sys.log 2>&1
我需要将对sripts的更改推送到生产服务器。我使用paramiko进入框中并更新index.py脚本。
我的问题是,如何使用最佳实践优雅地重新加载index.py以更新到新代码。
我是否使用:
sudo /etc/init.d/nginx reload
我是否重新启动runit脚本: sudo sv start myserver
或者我同时使用两者:
sudo /etc/init.d/nginx reload
sudo sv start myserver
或者以上都没有?
答案 0 :(得分:1)
基本上你必须重新启动加载Python脚本的进程。这是spawn-cgi而不是nginx本身。 nginx只通过Unix套接字与spawn-cgi进行通信,如果由于重新启动spawn-cgi进程而导致连接丢失,它将很乐意重新连接。
因此我建议一个简单的sudo sv restart myserver
。无需重新启动/重新加载nginx本身。