2017-09-17 277 views
1

我正在使用AWS上的資源創建Django Web應用程序。我是部署新手,並且在我的生產環境中(Elastic Beanstalk,即基於ELB)我想從Django開發Web服務器移開,轉而使用Nginx + Gunicorn。我一直在閱讀關於他們和ELB的內容。AWS elastic beanstalk + Nginx + Gunicorn

如果我在ELB上部署我的Django應用程序,需要Nginx + Gunicorn嗎?由於ELB確實帶有反向代理,自動縮放,負載平衡等。

欣賞輸入。

+0

如果您使用ELB,ELB的用例是避免必須配置這些,並且更多地擔心代碼的正確性。 –

回答

0

部署Django時,推薦的部署方法之一是使用WSGI(請參閱Deploying Django)。

這種部署Django的方法也得到了AWS Elastic Beanstalk的很好的支持,他們甚至有一個Deploying a Django Application to Elastic Beanstalk

在高層次上,要做到以下幾點:

  1. 創建虛擬環境(使用virtualenv),讓您的蟒蛇依賴的軌道爲您開發
  2. 配置您的彈性魔豆工程。這包括將你的virtualenv凍結爲requirements.txt文件,併爲django的WSGI配置EB Extensions。
  3. 使用EB CLI初始化您的項目,並創建一個環境。

在幕後,彈性魔豆是要旋轉起來的情況下,彈性負載均衡器,等等,以及配置的情況下接受與Apache的流量,然後使用Apache的mod_wsgi處理流量的Django。

0

您在應用程序級別上肯定仍然需要一些反向代理。儘管ELB沒有特定的反向代理,但應用程序負載均衡器(ALB)可以取代正確的反向代理,因爲它允許定義基於路徑的路由。儘管如此,它並不是nginx的完整替代品。有了nginx,您就可以使用這些工具,讓您可以在應用程序中執行幾乎無限的任務,因爲在嚴重的流量進入時它會不斷增長。

更重要的是,對於Django應用程序的生產,你一定要用一些uwsgi運行它,因爲它能夠處理任何「開發」服務器的流量,就像django發佈的服務器無法做到的那樣。使用上面描述的所有東西,你可以通過讓所有那些nginx和uwsgi的東西準備好與你的應用程序一起進行收費。

我喜歡在EBS多容器環境中每天都做與Docker競爭的所有應用程序。我們有nginx,uwsgi,所以我們可以做任何我們需要的。