[英]How do you use pip, virtualenv and Fabric to handle deployment?
您的設置,技巧以及最重要的工作流程是什么?
這些工具很棒但是仍然沒有附加到它們的最佳實踐,因此我不知道使用它們的最有效方法是什么。
--no-site-packages
嗎? “最佳實踐”非常依賴於環境,因此我不會聲稱我的實踐是最好的,只是它們適合我。 我的工作主要是小型網站,所以沒有多服務器部署,CDN等。我確實需要支持Webfaction共享主機部署,因為一些客戶需要他們能找到的最便宜的主機。 我經常需要在不同的環境中多次部署站點,因此可重復的腳本部署至關重要。
目前,新的部署分為以下幾個步驟:
fab staging bootstrap
(服務器設置和初始代碼部署) fab staging enable
(為此站點啟用Apache / nginx配置) fab staging reload_server
(重新加載Apache / nginx配置)。 這些當然可以組合成一個命令行fab staging bootstrap enable reload_server
。
完成這些步驟后,使用新代碼更新部署只是fab staging deploy
。
如果我需要回滾更新,那么fab staging rollback
。 回滾中沒有什么特別神奇的東西; 它只是將代碼回滾到最后部署的版本並將數據庫遷移到以前的狀態(這需要記錄有關部署后部署的遷移狀態的一些元數據,我只是在文本文件中執行此操作)。
我沒有使用這個答案中描述的Fabric腳本幾年,所以它們根本沒有維護,我對它們的質量不承擔責任:-)但你可以在https://bitbucket.org/carljm看到它們/ django-project-template - 在repo根目錄下的fabfile.py
中,以及deploy/
子目錄中。
我使用fabric來構建和部署我的代碼,並假設已經為此設置了一個系統。 我認為像puppet這樣的工具更適合自動安裝apache和mysql之類的東西,盡管我還沒有真正將它包含在我的工作流程中。
此外,我通常每個項目都有不同的virtualenv。 它們是從python的“基礎”安裝創建的 - 正如Carl指出的那樣 - 你可以留下一些全局的python庫。
所以在工作流方面會是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.