2014-01-11 184 views
2

由於我的一些項目越來越複雜,需要將應用程序實際部署到服務器所需的更多工作,我想要求您的幫助,因爲我沒有太多的這方面的經驗。將Python應用程序部署到AWS

目前我有一個應用程序用Flask編寫,使用MySQL作爲後端,Apache使用mod_wsgi,它可以在單個EC2實例中使用。現在,事情會變得稍微複雜一些,因爲我將在不同的域上使用新的模板,語言和一些細微的差異來獲得應用程序的另一個「克隆」版本,但核心代碼將是相同的。我還有一些「demo」網站,它可以在domain.com/demo上獲得,由不同的應用程序處理,因爲它的功能有限,所以它與主版本不同。

我現在部署的做法現在比較簡單,只需wget從我的Dropbox到EC2實例(我在ssh中),然後重新啓動apache服務。由於我的應用程序代碼位於單個文件和模板目錄以及其他一些不經常更新的小腳本中,因此這不是問題。當我更改代碼時,我只是更新了源代碼,當我更改模板時,請將zip,wget,unzip解壓縮,就是這樣。

這就是我迄今爲止設法做到的事情。我最近也開始使用GitHub來進行版本控制,並且希望得到以下一些建議:

  • 哪種方法可以讓這個過程自動化?我想最好的辦法是在每次提交時從git存儲庫中提取東西並將其部署到EC2實例上。如果是這樣的話,我該如何自動化呢? Github鉤子看起來有點矯枉過正,我希望有這個「更簡單」的工具。也許Amazon提供的beanstalk可以跳入?

謝謝!

回答

2

至少,將所有命令放在fabric腳本中,從長遠來看,這會讓事情變得更容易。

你有一個非常寬泛的問題,有很多主觀答案的機會,我不得不投票結束它。有很多很好的部分給你的問題,這就是爲什麼我試圖提供一些答案。

  1. 沒有優選的方式。你想安裝git作爲你的生產/舞臺/網絡機器的依賴嗎?如果你想要,使用git進行部署是完全可以接受的,如果不是的話,它就像使用內置的rsync實用程序一樣易於使用,並使用結構與它進行交互。有許多腳本可以在線顯示如何使用這兩種方法設置結構。可能還有很多其他方法,但rsync或git pull似乎是最流行的部署方式。

  2. Fabric允許您定義roles,並且可以很容易地同時部署到多個服務器。

  3. 特殊情況需要特殊功能。你可以在你的晶圓廠文件中定義這些。你可以創建邏輯在一個函數中部署到你的一般Web服務器上,然後有一個單獨的函數來構建和部署你的碎片服務器。

  4. 亞馬遜提供了幾個自動縮放工具,我從來沒有用過,但我相信很多人都有,而且很多人都會有關於他們的經驗的博客。

+0

謝謝您的輸入!我已經嘗試過fabric,並創建了一個很好的工具,現在提交更改,將其推送到github,並將其部署到遠程服務器。我意識到我的問題太廣泛了,我會嘗試編輯它,並在未來更具體。 –

相關問題