該項目應該如何部署和運行。這個空間有很多工具。應該使用哪個,爲什麼?在aws上運行django項目的最佳方式是什麼?
- 主管
- Gunocorn
- Ngnix
- 面料
- 博託
- 皮普
- VIRTUALENV
- 負載均衡
該項目應該如何部署和運行。這個空間有很多工具。應該使用哪個,爲什麼?在aws上運行django項目的最佳方式是什麼?
這取決於你的配置。我們在Rackspace上爲我們的環境使用以下堆棧,但您可以在AWS上使用EC2實例設置相同的內容。
所以它的工作方式是由詹金斯輪詢GIT推送到原始庫。詹金斯然後從原點拉下變化。構建一個Python Egg,運行單元測試,使用Fabric將這個egg部署到必要的環境中,並重新加載Apache配置,以確保分叉的Apache進程正在拾取新的Python蛋。
希望這會有所幫助。
尼斯堆棧邁克爾你有你的Nginx配置在你的項目源代碼?什麼是管理你的python項目的運行和線程的數量。我相信主管和Gunocorn可以在這裏幫忙。 – 2012-02-24 10:12:29
出於興趣,使用Apache + ModWSGI和Nginx的原因是什麼,而不僅僅是面向uWSGI的Nginx?另外,對於靜態內容,ec2單元爲什麼要移動而不是僅僅在s3上託管?是否有性能影響? – jvc26 2012-02-27 21:31:22
偉大的一點。我們從Apache/ModWSGI開始,然後將NginX添加到混合中,出於可預測性原因,我們希望將Apache保留在我們的PROD環境中。 S3真棒,完全。我們在Cloudfiles(S3等價物)上獲得了大部分內容。但是有些靜態文件對我們而言經常發生變化,CloudFiles不允許您在<20分鐘的CDN上設置緩存TTL。 – Michael 2012-02-27 23:20:11
正如邁克爾Klockel已經陳述取決於你的配置,我有:
您可以檢查她的部署設置E: Django, Virtualenv, nginx + uwsgi import module wsgi error
,爲什麼我使用nginx的和uwsgi這裏: http://nichol.as/benchmark-of-python-web-servers
而且我用的面料爲應用程序的部署和廚師獨奏http://ericholscher.com/blog/2010/nov/8/building-django-app-server-chef/
約翰尼拉緩存SQL查詢和烏鴉和哨兵記下應用程序正在發生的事件。
從性能的角度來看,我會使用uWSGI+Nginx(我認爲比較已經在另一個答案中鏈接了),pip和virtualenv用於部署,因爲這樣可以保持獨立性,並且便於使用結構或類似工具進行乾淨部署。使用git進行版本控制。 Jenkins可以處理持續集成。我會在您的EC2實例前使用AWS load balancer (ELB)來實現平衡 - 做這項工作時不必擔心太多。 django-storages用於將您的靜態文件上傳到s3,這可以節省您讓另一臺服務器分發靜態文件的工作量。
但是,這取決於您的管理開銷。如果您正在尋找乾淨且簡單的部署和擴展方法,那麼我會廢棄整個AWS EC2堆棧,使用Heroku作爲前端,使用s3作爲您的靜態文件。這可以節省維護盒子的所有管理時間,並讓您專注於開發。
題外話題,但您可以考慮使用Heroku將一個Django項目部署到AWS,並跳過本次辯論的大部分內容。 – 2012-02-28 02:27:35