當談到部署一個Django項目時,我非常喜歡noob。我想知道部署Django項目的各種方法以及哪一種方法是最受歡迎的。部署Django項目的不同方法及其優缺點?
回答
使用Nginx/Apache/mod-wsgi,你不會出錯。
如果您更喜歡簡單的替代方案,只需使用Apache即可。
有一個很好的部署文件:http://lethain.com/entry/2009/feb/13/the-django-and-ubuntu-intrepid-almanac/
Django文檔中列出的Apache/mod_wsgi的,阿帕奇/ mod_python的和FastCGI等
mod_python的現在已經過時,應該改爲使用mod_wsgi的。
的Django與mod_wsgi的易於安裝,但: :
- 你只能在一個時間[你甚至可以只使用Python版本的mod_wsgi被編譯爲編輯]用一個Python版本
- [編輯:看來,如果我錯了mod_wsgi的不支持的virtualenv:它確實]
所以對多個網站(針對不同的Django/Python版本)上的服務器的mod_wsgi不是 百世t解決方案。
的FastCGI可以用virtualenv中使用,也有不同的Python版本,你
./manage.py runfcgi …
運行它,然後配置你的網絡服務器使用這個FCGI接口。
關於Django部署的新東西似乎是gunicorn。它是一個實現wsgi的web服務器,通常用作「代理」的「大」web服務器的後端。
使用部署gunicorn感覺很像fcgi:你運行一個進程,使用manage.py來管理django處理的東西,並將一個web服務器作爲前端向全世界運行。
但gunicorn部署有超過fcgi的一些優勢:
- 速度 - 我沒有找到來源,但基準說FCGI是不一樣快的F建議
- 配置文件,您FCGI執行manage.py命令時必須在命令行上執行所有配置。當通過一個init.d運行多個django實例(類似於unix的操作系統的系統服務啓動)時,這是不方便的。它總是相同的cmdline,只有不同的配置文件
- gunicorn可以放棄特權:沒有必要在你的init.d腳本來做到這一點,可以很容易地切換到每Django的情況下一個用戶
- gunicorn表現得更像守護進程:寫入pidfile和日誌文件,分叉到後臺等,使得它更容易在init.d腳本中使用。
因此,我建議使用gunicorn解決方案,除非您在單個服務器上使用低流量的單個站點,而不是使用wsgi解決方案。但我認爲從長遠來看,你對槍炮更加滿意。
如果你只有一個django網絡服務器,我會建議使用nginx作爲frontendproxy,因爲它是最好的表現(同樣這是基於我在某些博客文章中閱讀的基準測試 - 不再有url)。 我個人使用apache作爲frontendproxy,因爲我需要它爲服務器上託管的其他網站。
Django的部署進行簡單的設置指令可以在這裏找到: http://ericholscher.com/blog/2010/aug/16/lessons-learned-dash-easy-django-deployment/
我對gunicorn的init.d腳本位於github上: https://gist.github.com/753053
不幸的是我並沒有在博客,但經驗豐富的系統管理員應該能夠完成所需的設置。
我遠離經驗豐富的系統管理員,但非常感謝您總結各種部署方法。 – Sushi 2011-02-03 12:35:43
我自己在部署Django項目和自動部署過程中遇到了很多問題。 Apache和mod_wsgi就像Django Deployment的詛咒一樣。有幾種工具,如Nginx,Gunicorn,SupervisorD和正在趨向於Django部署的Fabric。起初,我單獨使用/配置它們,而沒有部署自動化,這花費了很多時間(我必須爲客戶維護測試以及生產服務器,並且必須在新功能經過測試和批准後立即更新它們)。但是,我偶然發現了django-fagungis,它將我的項目從bitbucket克隆到我的遠程服務器(它使用Nginx,Gunicorn,SupervisorD,Fabtic和virtualenv,並且還安裝所有依賴項),完全自動化了Django Deployment,只有三個命令:)你可以在我的博客文章here中找到更多關於它的信息。現在我甚至不必參與這個過程(過去需要花費很多時間),我的一個初級開發人員在他的本地機器上運行django-fagungis mentioned here這三個命令,我們得到一個清晰的新副本我們的項目部署在幾分鐘內沒有任何麻煩:)
- 1. 不同的部署項目
- 2. 部署Django項目
- 3. XML解析器及其優缺點
- 4. 網站項目和WCF項目在相同或不同的解決方案:優點和缺點
- 5. Django-modpython部署項目
- 6. 類庫項目VS App_Code - 優點/缺點?
- 7. 部署django項目得不到結果
- 8. 測試前提條件的不同方法的優缺點?
- 9. 將django項目部署到測試服務器的好方法?
- 10. c#中不同Dbconnectors方法的優缺點?
- 11. 從eclipse導出maven項目及其在tomcat上的部署
- 12. 尋找關於自動化部署優點/缺點的文章
- 13. Java靜態方法優點和缺點
- 14. 在Heroku的部署Django項目
- 15. Aptana - 不同的PHP項目相同的部署目錄
- 16. 部署項目中缺少項目依賴項
- 17. 不同配置格式的優缺點?
- 18. 垂直部署優點和缺點在Jboss/MySQL
- 19. 無法部署SQLCLR項目
- 20. 在Google App Engine上部署Django項目
- 21. 部署Django項目時導入錯誤
- 22. django - 將項目部署到heroku
- 23. 部署第一個Django項目
- 24. 搖籃 - 父項目缺戰子項目罐子日食部署
- 25. Google App Engine優點\缺點爲Django?
- 26. 有2012 SSIS部署錯誤,同時部署項目目錄DB
- 27. 父目錄及其子目錄的不同Apache索引選項
- 28. Azure端點 - 不同部署
- 29. 在Java項目中組織軟件包的優點和缺點
- 30. JavaFX與其他JavaFX項目部署
謝謝Lakshman。這看起來很全面。只有django有這麼多的部署方法,它可以混淆任何新的django。 – Sushi 2011-02-03 07:07:06