【问题标题】:Correct way to update live django web application更新实时 django Web 应用程序的正确方法
【发布时间】:2016-04-21 06:11:14
【问题描述】:

在实际问题之前,让我解释一下我们的架构。我们在我们的服务器上通过 ssh 使用 git,并启用了 post-recieve 挂钩来设置代码。代码都保存在一个单独的文件夹中。我们需要的是,每当有人将代码推送到服务器时,它就会在实时站点上运行测试、迁移和更新。目前,每当应用程序在模型中进行更新时,它都会崩溃。

我们需要的是钩子脚本检测代码是否正确的方法,正确的意思是没有语法错误等,然后运行迁移并使用新代码更新当前应用程序而无需停机。我们使用 nginx 代理 django 应用程序,virtualenv 用于从 requirements.txt 文件安装包,并使用 gunicorn 进行部署。

基线是,如果在任何时候失败,推送提交都应该被拒绝。如果所有测试都成功,它应该迁移到 dbs 并从新应用程序开始。

虽然我有两个端口用于相同的。一个运行主应用程序,另一个运行推送提交。如果推送代码测试成功,将 nginx 上的端口更改为 git application 并重新加载 nginx。如果有的话,请讨论这个应用程序的缺点。以及一个示例 post-commit 脚本来展示如何在失败的情况下拒绝 git commit。

【问题讨论】:

    标签: python django git nginx


    【解决方案1】:

    考虑使用fabric。 Fabric 将允许您创建 pythonic 脚本,您可以在远程服务器中运行部署以创建新数据库并检查迁移是否安全完成。一旦一切顺利,您可以在您的结构脚本中提及以部署在产品中,或者如果在结构中提及失败,则发送电子邮件。

    这让你的生活变得简单。

    【讨论】:

      猜你喜欢
      • 2012-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2019-09-08
      • 2015-11-01
      • 2012-09-04
      • 2013-01-14
      相关资源
      最近更新 更多