Django无缝部署到单个服务器
我有一个基于Django和Python 2.6构建的新网站,我已将其部署到云端(符合流行语和Amazon micro EC2实例是免费的!). 由于这是一个新网站(并且想要玩最新最好的网站),我在主管之上使用了Nginx和Gunicorn. 我的问题是,如何在不中断服务的情况下更新网站?当我运行我的小更新脚本时,该站点的用户获得404s / 500s. 有没有办法在不添加其他服务器的情况下执行此操作(价格是关键)? 我希望有一个临时系统(在不同的端口上?)和在分段和生产之间的无缝切换.在同一个(免费)服务器上.通过面料. 谢谢! 塔尔. 有关: > Seamless deployment in Rails 最佳答案
Nginx允许您为反向代理设置故障转移,您可以将一个gunicorn实例作为主要实例,只要该版本正在运行,它将永远不会查看故障转移.
如果您配置站点以使新版本位于故障转移实例中,则只需编写fab文件以使用新版本的站点更新故障实例,然后在准备好后关闭主实例. Nginx将无缝故障转移到第二个实例,而bam您运行的新版本没有停机时间. 然后,您可以更新主版本,然后重新打开它,您的主版本现已上线.此时,您可以保持故障转移实例运行以防万一,或将其关闭. 有些事情需要考虑.您必须小心数据库,如果您使用sqllite,请确保两个gunicorn实例都可以访问sqllite文件. 如果您有一个普通的数据库,这不是一个问题,您只需要确保在切换到新版本之前应用新版本所需的任何数据库迁移. 如果它们是向后兼容的变化,那么这不是什么大问题.如果它们不向后兼容,那么请注意,在切换到新版本之前,您可以破坏旧版本的站点. 为了简化操作,我将在不同的虚拟环境中运行这些版本. 如果您使用supervisord来控制gunicorn,那么您可以使用supervisorctl命令重新加载/重新启动您想要部署的实例,而不会影响另一个实例. 希望有所帮助 这是和nginx配置的示例(不是完整的配置文件,删除了不重要的部分) 这假设主要gunicorn实例在端口9005上运行而另一个在端口9006上运行
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- php-页面无法正确重定向Nginx
- django-与gunicorn nginx长期运行的请求
- 调试 – nginx php-fpm xdebug netbeans只能启动一个调试会
- 在nginx中,如何返回http 500返回码并包含响应客户端的响应体
- nginx用查询字符串重写url
- javascript – 如何定义Node.js应用程序上下文路径?
- php-从nginx将参数传递给auth_request模块
- 仅在一个站点上显示PHP错误
- python-nginx / gunicorn Django Rest Framework应用程序的
- 我的记忆在哪里?! Nginx PHP-FPM前端Web服务器慢慢爬行