那么诀窍是什么呢?Nginx面对着客户。通常情况下,这些请求会在80号港口被转交给古尼科恩A。
您不能就地运行代码更新,因为可能有问题。所以你做了一个新的代码结账,并在某个端口5678上启动了一个独立的gunicorn B。
在开发/测试数据库上测试新代码之后,您可以:
你说的对吗?您是否只是编写一个脚本来更快地运行这四个操作,并最小化服务器响应错误的持续时间(在步骤2和步骤4之间)?
发布于 2019-08-18 08:28:48
Nginx支持配置重装。使用此功能,更新应用程序可以如下所示:
nginx -s reload
重新加载nginx配置。在此之后,Gunicorn B将提供新的请求,而Gunicorn A仍将完成对旧请求的处理。假设您的应用程序对两个并发实例正确工作,这将为您提供一个零停机时间更新。
nginx文件的有关摘录:
主进程接收到重新加载配置的信号后,将检查新配置文件的语法有效性,并尝试应用其中提供的配置。如果这是成功的,主进程将启动新的辅助进程并向旧的辅助进程发送消息,请求它们关闭。否则,主进程将回滚更改,并继续使用旧配置。旧的辅助进程,接收关闭的命令,停止接受新的连接,并继续服务当前的请求,直到所有这样的请求得到服务。在此之后,旧工作人员将处理退出。
https://stackoverflow.com/questions/57443642
复制相似问题