2011-03-30 47 views
13

我最開始是一名獨立的Web開發人員,最近我通過給出一個相當簡單的 網站的報價來嚇跑客戶,這比他們的預期要高很多。這基本上是 宣傳冊,他們可以在Wordpress.com或Google網站等託管解決方案 中完成自己的工作。除了其中一個這個關鍵特性,那 讓我覺得Django會是一個不錯的選擇,並且可以激發一些適當的web開發動機。自動設置和部署Django項目的好工具

當我查看我在粗略估算中列出的任務時,我很清楚 對於此客戶網站而言,絕大多數時間都不是 。這讓我想到我應該使用 腳本來自動化設置和部署新的Django項目。

幾件事情仍然需要手工完成,如:

  • 建立一個新的VPS(或在大多數情況下只是virtualhosts繼續現有的VPS)。

  • 編輯DNS設置指向clientsdomain.com和test.clientsdomain.com 到新的VPS。

  • 設置SSH密鑰

  • 編輯配置文件。

然後,該腳本會做這樣的東西:

  • 在新的VPS安裝一些必需的程序包

  • 安裝默認情況下的iptables的新VPS防火牆

  • 添加nginx/apache配置爲clientsdomain.com和test.clientsdomain.com

  • 設置新的數據庫,用於VPS上的生產和測試,以及在本地機器上進行開發。

  • 創建一個新的Django項目並將其放在Bitbucket上。

  • 設立生產,測試和開發settings.py和local_settings.py

  • 建立異地backuproutines生產數據庫和上傳的文件目錄。

  • 啓用一些默認的應用程序:的flatpages,管理

  • 添加一些樣板模板,一對夫婦樣板的flatpages和導航欄的。

  • 添加960。GS CSS框架

  • 搜索加入jQuery的

  • 設置djapian或草垛(包括自動更新cron作業)。

  • 設置新的Google Analytics(分析)配置文件。

  • 包括可能複製之間的生產,測試和開發數據庫

  • 設置Pingdom的監控

我用RakeFabric對於有些類似(但不那麼雄心勃勃的)東西在過去,我認爲Fabric可能也適合這項任務,但我仍然喜歡你的輸入。還有其他工具我應該看看?我聽說 關於Puppet的事情很好,但只是看着他們的網站(它包含了企業這個詞)給我的感覺是,它可能是一個人操作的矯枉過正。

回答

4

我們目前使用fabric + buildout來完成。其他人說,廚師或木偶更適合(如果你想做服務器級別的東西,不僅僅是應用程序級別)。

而且Django的還有它採取了很多負擔過你的一些專用託管,我特別喜歡http://ep.io我們用它來驅動我們的django-cms的演示全自動deployements,所以也許你應該看看這些託管服務提供商而不是將自己限制在更適合你的VPS上。

+1

好吧,我猜這可能是值得看看傀儡或廚師然後。 – oivvio 2011-03-30 16:20:57

+0

我有點像VPS路線提供的靈活性和鎖定風險低。我寧願不圍繞任何**一個**託管提供商構建我的部署基礎架構。儘管我嘗試了Webfaction,但它非常流暢,除了它們的服務器(德克薩斯州)和我的用戶(瑞典)之間的高延遲。 – oivvio 2011-03-31 06:55:36

+0

@ olvvio,完全理解這一點,但我發現它非常好,知道我不必擔心我的服務器,並且有人知道他們在做什麼來處理它。給了我更多時間來思考我的應用程序,而不是我的服務器。 – ojii 2011-03-31 07:53:22

4

我最近一直在考慮很多這種情況,因爲有人在類似的位置。

很多你提到的內容都可以通過設置一些可以從git中爲每個新項目獲得的好的框架代碼來幫助。

看一看這一個很好的起點,一個普通的Django項目的框架代碼

http://blog.zacharyvoase.com/2010/02/03/django-project-conventions/

我放在一起類似的東西,讓我起牀和快速運行,而且要分開服務器的東西從項目的東西。這非常重要,因爲它允許您在不包含系統/服務器文件的情況下版本控制每個項目。 It's here(仍在進行中)。這需要照顧的文件夾佈局,額外的CSS,HTML樣板東西,網格/ 960的東西,jQuery的開發與生產設置,數據庫設置(mostely),默認安裝的應用程序等。這裏是the layout explained

使用Virtualenv的,Virtualenvwrapper & pip允許你設置獨立的封裝python環境,這對於在一個VPS上運行多個項目非常有用。 Pip允許您將軟件包安裝到特定的virualenv,並將所有軟件包輸出到稍後可以導入的文本文件中。這使得從開發到生產的代碼重新部署非常迅速。它還允許你在你的骨架代碼中編寫一個通用的需求文件,它會自動安裝所有正常的Django應用程序,例如django-tagging等。

在數據庫方面,我已經停止嘗試開發數據庫和生產數據庫不同的機器,導入/導出夾具太難了。現在我只需在VPS上單獨生產&開發數據庫,​​並在開發時遠程連接(通過ssh)到開發人員。你可以很容易地複製一個到另一個也很好。

當一切準備就緒的話,你可以從開發到生產用布部署(我還沒有陷到這個所以我不知道它的易用性)

,我會很有興趣聽到其他人的想法,因爲我正準備發佈一些類似的東西!

+0

您已將virtualenv文件與項目混合,而不是在〜/ .virtualenvs中。這是什麼原理? – oivvio 2011-03-30 20:20:10

+0

不知道我明白了嗎? project_root是包含該應用程序(以及在VCS下提交的內容)的內容。項目根目錄中的所有內容都涉及到virtualenv等,但這並未提交給VC。 – 2011-03-30 21:33:50

8

木偶似乎艱鉅和矯枉過正的小項目,因爲它的所以經常用於大型部署,但我用它來管理standalone mode中的一臺機器,而無需安裝客戶端服務器,這樣我就不必處理SSL證書和多臺機器,這使得事情變得簡單多了,但仍然給我我可以非常快速地進行災難恢復,或者無需付出很多努力即可移動我的主機。有一些great reasons(冪等性,跨平臺支持,完整的生命週期管理,抽象,簡潔的DSL)使用現代配置管理系統的系統,本質上是一個循環ssh或依賴於鎖定你的平臺的腳本。

請查看learning puppet以獲得快速提升,包括示例和虛擬操場。您可以使用獨立運行的簡單Puppet腳本(清單)完成非常有用的工作,然後在需要時開始學習所有高級功能。

另一件不錯的事情是,很多Puppet清單和模塊已經被其他人編寫,並且他們在Puppet Forge和許多其他advanced Puppet users上共享。

+0

愛傀儡,但據我所知,傀儡鍛造*只*提供模塊,而不是清單,這是不幸的。 – 2014-08-24 17:12:16

+0

清單大多隻需要傳遞一個小配置的正確模塊,並且通常會針對您的設置,而模塊旨在重用,而不是針對您的設置。該模塊的自述文件應該有詳細說明如何從清單中使用它。您更有可能在gists中找到示例清單(https://gist.github.com/rcrowley/701221),但像您在要點中找到的任何代碼一樣,如果您可以放在某處可重用(如模塊)並且在那裏調用它,從長遠來看,您的可維護性會更好。 – mmrobins 2014-08-25 18:30:19