当前位置:  开发笔记 > 后端 > 正文

生产更新后,我要重新启动nginx和gunicorn吗?

如何解决《生产更新后,我要重新启动nginx和gunicorn吗?》经验,为你挑选了1个好方法。

当我在我的作品中推出Django应用程序的更新时,最佳做法是什么?我应该重启两个gunicornnginx服务

sudo service gunicorn restart
sudo service nginx restart

或重新启动gunicorn只够了吗?如果我必须进行两次重启,最后重启的顺序是否会有所不同?谢谢!



1> 小智..:

这完全取决于您如何配置盒子。

为了将停机时间降到最低,我实际上是在旧版本仍在运行时,将新版本加载到包装箱上的其他目录中。我根据新版本的requirements.txt创建一个新的虚拟环境。然后,我启动第二个gunicorn实例,并在其中运行新版本(通过supervisor和supervisord.conf中的条目完成),并使旧实例仍在运行。

然后,我更新我的nginx vhost文件,将服务器指向新版本的gunicorn套接字,最后重新加载nginx。我快速检查新站点是否正常运行,然后停止旧的gunicorn实例。如果由于某种原因它没有响应,我将我的nginx配置切换回原来的旧配置,然后找出问题所在。

我使用Ansible脚本来完成所有这些操作,但这是一篇很棒的文章,其中包含一些Fabric脚本来做类似的事情:https ://medium.com/@healthchecks/deploying-a-django-app-with-no-downtime-f4e02738ab06

另一方面,如果您只是就地更新代码,则无需对nginx配置进行任何更改,因此您无需重新加载它。只需重新装上金枪鱼就可以了。

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有