我有一個目錄分發給5個服務器的python程序,類和包。看來我不斷地增加更多的服務器,現在我只是從我的本地盒子到服務器做一個基本的rsync。跨服務器分發代碼的最佳方式是什麼?
在n個服務器上分發代碼的更好方法是什麼?
感謝
我有一個目錄分發給5個服務器的python程序,類和包。看來我不斷地增加更多的服務器,現在我只是從我的本地盒子到服務器做一個基本的rsync。跨服務器分發代碼的最佳方式是什麼?
在n個服務器上分發代碼的更好方法是什麼?
感謝
首先,請務必保留所有的代碼版本控制下(如果你還沒有這樣做),這樣就可以從倉庫檢出,而不必複製代碼的新版本它從您的工作站到服務器。
使用版本控制,您可以使用諸如Capistrano之類的工具自動檢出每臺服務器上的代碼,而無需登錄每臺機器並進行手動結賬。
有了這樣的設置,部署一個新版本的所有服務器可以從本地機器上運行
$ cap deploy
一樣簡單。
雖然我也使用版本控制來做到這一點,但您可能考慮的另一種方法是使用主機系統使用的任何軟件包管理(例如RPM或dpkgs)打包源文件,並將系統設置爲使用自定義存儲庫然後,「apt-get upgrade」或「yum update」將更新系統上的軟件。然後你可以使用諸如「mussh」之類的東西來運行所有工具上的stop/update/start命令。
理想情況下,您應先將其推送到「測試」存儲庫,讓您的分段系統安裝它,並且一旦您的測試已經簽署,您就可以將其移至生產存儲庫。
這與一般使用結構或版本控制的建議非常相似,只是另一種可能更適合某些人的替代方案。
使用軟件包的缺點是您可能使用版本控制,您必須管理這些軟件包的版本號。我在版本控制中使用修訂標記來完成此操作,因此我可以在目標系統上輕鬆地執行「svn update」或類似操作。
無論哪種情況,您都需要考慮從一個版本遷移到下一個版本。如果用戶加載包含對其他元素的引用的頁面,則會執行更新並且這些元素消失,那麼您會做什麼?您可能希望在部署腳本中執行某些操作,或者在代碼中先用新頁面推出某個版本,然後保留舊的引用元素,然後部署該元素,然後刪除引用的元素並稍後進行部署。
用這種方式,用戶不會在頁面內看到破碎的元素。
'fabric' - 我一直在尋找這個我的整個成年生活。 – 2010-06-19 12:12:22