0

我的堆栈是 nginx,它使用 spawn-fcgi 运行 python web.py fast-cgi 脚本。我正在使用 runit 来保持进程作为守护进程存活。我正在使用生成的 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 SSH 进入盒子并更新 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

或者以上都不是?

4

1 回答 1

1

基本上,您必须重新启动加载 Python 脚本的进程。这是 spawn-cgi 而不是 nginx 本身。nginx 只通过 Unix 套接字与 spawn-cgi 通信,如果由于 spawn-cgi 进程的重新启动而导致连接丢失,它将很高兴地重新连接。

因此,我建议一个简单的sudo sv restart myserver. 无需重新启动/重新加载 nginx 本身。

于 2012-03-19T20:22:19.267 回答