Django和多阶段服务器

Hel*_*nar 10 deployment django

我正在与需要多阶段服务器设置的客户端合作:开发服务器,阶段服务器和生产/实时服务器.

阶段应该尽可能稳定,以测试我们在开发服务器上开发的所有新功能,并最终将其带到实时服务器.

我们使用git和github进行版本控制.我使用Ubuntu服务器版作为操作系统.

问题是,我从未在这样的多阶段服务器计划中工作过.您会建议哪些软件/项目以正确的方式处理此类设置,尤其是部署并将开发的新功能移动到舞台然后再转移到实时服务器?

Jos*_*ton 7

我们使用两种不同的方法将代码从环境转移到环境.第一种是在我们的源代码控制系统中使用分支和触发器(在我们的例子中是mercurial,尽管你可以用git做同样的事情).另一种方法是使用fabric,一个python库,用于跨多个服务器执行shell代码.

使用源代码控制,您可以拥有几个主要分支,例如production development staging.假设您要将新功能移动到暂存中.我将用mercurial来解释,但你可以将命令移植到git,它应该没问题.

hg update staging
hg merge my-new-feature
hg commit -m 'my-new-feature > staging'
hg push
Run Code Online (Sandbox Code Playgroud)

然后,使用触发器将远程源控制服务器推送到所有Web服务器.然后,每个Web服务器上的触发器将执行更新并重新加载Web服务器.

要从升级转换到生产,这也很简单.

hg update production
hg merge staging
hg commit -m 'staging > production'
hg push
Run Code Online (Sandbox Code Playgroud)

它不是最好的部署方法,它使得回滚非常困难.但它的设置快速简便,并且比将每个更改手动部署到每个服务器要好得多.

我不会通过面料,因为它可以参与其中.您应该阅读他们的文档,以便了解它的功能.面料和django有很多教程.我强烈推荐Fabric架构,因为它为你提供了更多的控制,而且只涉及编写一些python.


Ber*_*ant 5

git有一个很好的分支模型(例如 github 本身也使用它)。您可以使用git-flow轻松应用此分支模型,这是一个 git 扩展,可让您应用一些适合此模型的高级存储库操作。还有一篇关于这个的不错的博文

我不知道你到底想在你的部署工作流中自动化什么,但是如果你应用上面提到的模型,大部分正确的版本处理都是由 git 完成的。

要为此添加一些进一步的自动处理,fabric是一个简单但很棒的工具,您会找到许多有关其用法的教程(也可以与 git 结合使用)。

使用virtualenv 和 pip处理 python 依赖项肯定是一个很好的方法。

如果您需要更复杂的东西,例如。在一台机器上处理多个 django 实例并处理系统范围的依赖关系等 checkout puppetchef