2016-03-03 136 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