2011-10-08 61 views
10

我與需要多級服務器安裝客戶端的工作:開發服務器,服務器階段,生產/現場服務器。Django和多級服務器

階段應該是穩定的,因爲它可以測試所有我們在開發服務器開發這些新的功能,並藉此到底直播服務器。

我們使用Git和github上進行版本控制。我使用Ubuntu服務器版作爲操作系統。

的問題是,我在這樣的多級服務器的計劃從來沒有工作。你會推薦什麼樣的軟件/項目來處理這種設置,特別是部署和將新功能開發到舞臺,然後移到實時服務器上?

+0

對於那些投票結束的人來說,關於部署的工具和流程與軟件開發沒有關係? –

+0

我也很想知道,部署和相關工具是軟件生命週期的重要組成部分。 – Hellnar

+0

喬希:不幸的是,這個問題沒有單一的好答案(是開放的)。這就是爲什麼人們投票結束它。這種問題對於某種論壇會更好,但不適用於計算器。 –

回答

7

我們使用兩種不同的方法將代碼從環境移動到環境。首先是在我們的源碼控制系統中使用分支和觸發器(在我們的例子中是mercurial,儘管你可以用git做同樣的事情)。另一個是使用結構,一個python庫在多個服務器上執行shell代碼。

使用源代碼管理,您可以有幾個主要分支,如productiondevelopmentstaging。假設您想要將新功能移入分期。我會用mercurial來解釋,但是你可以把命令移到git上,它應該沒問題。

hg update staging 
hg merge my-new-feature 
hg commit -m 'my-new-feature > staging' 
hg push 

然後,您使用觸發器將您的遠程源控制服務器推送到所有Web服務器。那麼每個Web服務器上的觸發器會做一個更新和重新加載web服務器。

爲了從登臺到生產轉移,這是很容易。

hg update production 
hg merge staging 
hg commit -m 'staging > production' 
hg push 

這不是部署的最好的方法,它使回滾挺難的。但設置起來很快捷,而且比手動將每個更改手動部署到每臺服務器上要好得多。

我不會通過面料,因爲它可以得到相當複雜。您應該閱讀their documentation,以便了解它的功能。有很多關於fabric和django的教程。我強烈建議使用織物路線,因爲它可以提供更多的控制,而且只涉及編寫一些python。

2

嘗試Gondor.io或Ep.io,它們都讓它變得非常簡單(gondor特別擅長此區域),從VCS中獲得兩個具有非常類似代碼的實例 - 並且可以來回移動數據。 (如果您需要邀請,請在IRC中詢問,但是如果我記得,它們現在都是開放的)

4

有一個nice branching model for git(因爲它也用於github本身)。您可以輕鬆地將使用git-flow該分支模式,這是一個Git擴展,使您以應用融入這個模型的一些高級別庫操作。關於這個還有一個nice blogpost

我不知道你想在你展開工作流程來的Automize什麼,但如果應用上述模型中,最正確版本的處理是由git的完成。

要添加一些進一步的自動處理此,fabric是一個簡單而偉大的工具,你會發現many tutorials about its usage(也與git的組合)。

對於使用virtualenv and pip處理python依賴關係肯定是一個非常好的方法。

如果你需要更復雜的東西,例如。在一臺機器上處理多個django實例以及處理系統範圍的依賴關係等。簽出puppetchef