2016-03-03 111 views
3

我正在开发一个Django应用程序,我大约完成了50%。我在一个我想开始向人们展示的地方,因此我需要部署它。我已经决定将我的主机放在Heroku上。我想从一开始,因此我下面的问题列表正确做到这一点...在Heroku上部署Django应用程序的最佳实践

这里的事情的当前状态:

  • 我想使用新的管道中Heroku.That方式的功能,我可以 轻松地在我的应用程序的分期和生产版本之间移动。
  • 我想用一个CI服务器(目前我看circleci.com)
  • 我使用Python 3.5
  • 我想在部署 过程尽可能地自动化,这样的作为运行的迁移和测试(如果需要)等
  • 如果它很重要,但我的代码是到位桶

托管不知道所以,我的问题是:

  1. CI服务器明显运行测试。我是否应该对 进行我的测试,以及Heroku上的舞台和制作测功机?
  2. 我应该直接从CI服务器部署到Heroku吗?
  3. 我应该使用哪些工具来自动部署?我不能使用织物(仅限python2),invoke看起来没有生产准备。如果我只编写我自己的简单部署脚本,这很好吗?
  4. 然后还有一堆其他工具,比如我已经阅读过的docker和tox,但是我不确定是否需要它们中的任何一个。
  5. 还有什么我在将Heroku应用程序部署到Heroku时应该记住的吗?

回答

3
  1. 您是否要运行单元测试或验收测试目前还不清楚我,但肯定我不会在生产环境中运行它们。 (AT会搞乱你的数据 - 如果你正在做分析)
  2. 你的第二个问题的答案取决于偏好。实际的持续集成意味着,如果你推动某件事来掌握,并且它通过了每一个测试,那么它就可以继续下去,所以它就会生效。这是个不错的主意,但如果您希望某个功能在特定时间上线,并且您不想混淆功能开关?我认为按一个按钮不是太痛苦。
  3. 我想的bash脚本都不够好,精简版本(我在繁重的流量浪费后2天说这句话..)
  4. 泊坞窗是出于多种原因一个伟大的工具,但如果你正在构建一个单个Django应用程序,我认为没有必要使用它。这只会让事情变得更加困难(我想这意味着你还没有经历过的+1事情,所以它可能会导致很多令人头疼的问题)
  5. 请确保你的Django秘密不会被提交给bitbucket:https://github.com/matyasfodor/todo-django/blob/911614c7e41f58debe4a6369c9f0fa3cad0c52a2/todo/settings.py#L23(并没有其他的秘密是..)
+0

谢谢,这是非常有益的。至于第1点,我正在谈论单元测试。我应该在Heroku分段服务器上运行单元测试吗?在生产服务器上运行它怎么样?当我在本地进行开发和测试时,测试运行者会创建一个单独的测试数据库,在测试运行后将其销毁,从而使我的当前数据库保持完好。我假设在Heroku上运行测试时可以做类似的事情,或者情况并非如此? – Johan

+0

从我的观点来看,单元测试的重点是验证函数内部的功能,并且环境应该被嘲弄。所以没有理由在生产环境中运行它们,单元测试只能在CI服务器上运行,而不能在分段或生产服务器上运行。 – fodma1