django发布管理(分期,测试和生产)

Mo *_*abi 8 django agile

我已经进入django一段时间了,我最关注的是学习如何在我的开发机器上本地开发和运行应用程序.现在我正在尝试学习部署和发布管理的最佳实践.

我现在正在尝试在github中设置我的代码,然后以某种方式设置一个生产和暂存环境,在那里我可以以最小的影响推动更改.

我可以遵循最佳实践吗?以及如何创建一个敏捷环境,您可以将代码提交到临时环境中,客户可以在此环境中查看工作.

S.L*_*ott 3

设置一个生产和暂存环境,我可以在其中以最小的影响推动更改。

这在某些情况下很容易,在某些情况下很困难。

当你改变Django中的数据库设计时,你必须重做syncdb,并且当你这样做时你可能必须提取并重新加载现有数据。这很难。有些人使用south. 我们手工完成,因为south处理大多数情况,而不是全部

当您发布新代码(不更改数据库)时,升级非常简单。

  1. 当 Apache 启动时,mod_wsgi就启动。
  2. 启动时mod_wsgi,它会读取.wsgi文件以确定要做什么。
  3. .wsgi文件本质上定义了将调用您的应用程序的 Django 请求-答复处理循环。
  4. .wsgi文件的时间戳发生更改时,mod_wsgi重新读取该文件。实际上,这将重新启动您的应用程序。

如何创建一个敏捷环境,以便您可以将代码提交到临时环境中,客户可以在其中查看您所做的工作。

这很容易。

  1. 将您的应用程序代码放入/opt/myapp/myapp-x.y/目录结构中。该myapp-x.y名称与 git 标签名称匹配。

  2. 登台只是使用应用程序的下一个版本的 Django 配置。 /opt/myapp/myapp-2.3/。生产是当前版本。 /opt/myapp/myapp-2.2/。是的,有旧版本。

  3. 使用 Apache 指令将 Apache 配置定义为具有两个(或更多)“位置” <Location>。其中一个位置是具有普通路径的“生产”。另一种是与其他路径“分阶段”。或者使用虚拟主机。或者任何其他让您高兴的 Apache 事物。

现在,两个版本都在并行“位置”运行。

您可以通过(也许)重做数据库并更改.wsgi文件以指向应用程序的新版本来调整暂存。

您可以通过(也许)重做数据库并更改文件.wsgi以指向应用程序的新版本来调整生产。

当你有可发布的东西时,给它贴上标签。修复您的 Pythonsetup.pysetup.cfg部署到下一个/opt/myapp/myapp-tag目录。