【问题标题】:AWS elastic beanstalk + Nginx + GunicornAWS 弹性豆茎 + Nginx + Gunicorn
【发布时间】:2018-02-25 20:12:51
【问题描述】:

我正在使用 AWS 上的资源创建一个 Django Web 应用程序。我是部署新手,在我的生产设置(Elastic Beanstalk,即基于 ELB)中,我想远离 Django 开发 Web 服务器,而是使用 Nginx + Gunicorn。我一直在阅读它们以及 ELB。

如果我在 ELB 上部署我的 Django 应用程序,是否需要 Nginx + Gunicorn?由于 ELB 确实带有反向代理、自动缩放、负载平衡等。

欣赏输入。

【问题讨论】:

  • 如果你在使用 ELB,ELB 的用例是避免必须配置这些,而更担心代码是否正确。

标签: django amazon-web-services nginx python-3.4 gunicorn


【解决方案1】:

在部署 Django 时,推荐的部署方法之一是使用 WSGI(请参阅Deploying Django)。

AWS Elastic Beanstalk 也很好地支持这种部署 Django 的方法,他们甚至有一个Deploying a Django Application to Elastic Beanstalk

在高层次上,您希望执行以下操作:

  1. 创建一个虚拟环境(使用virtualenv),以便在您开发时跟踪您的 Python 依赖项
  2. 为 Elastic Beanstalk 配置您的项目。这包括将您的 virtualenv 冻结到 requirements.txt 文件,以及为 django 的 WSGI 配置 EB 扩展。
  3. 使用EB CLI 初始化您的项目,并创建一个环境。

在幕后,Elastic Beanstalk 将启动实例、弹性负载均衡器等,并将实例配置为接受 Apache 的流量,然后使用 Apache 的 mod_wsgi 处理 Django 的流量。

【讨论】:

    【解决方案2】:

    您的应用程序级别肯定仍然需要一些反向代理。虽然 ELB 没有特定的反向代理,但 Application Load Balancer (ALB) 将取代对适当反向代理的需求,因为它允许定义基于路径的路由。尽管如此,在这种情况下,它并不能完全替代 nginx。使用 nginx,您可以使用工具来完成应用程序可能需要的几乎无限的事情,因为当严重的流量出现时,它会不断发展。

    更重要的是,对于生产环境中的 Django 应用程序,您肯定希望使用一些 uwsgi 来运行它,因为它能够处理任何“开发”服务器的流量,而 django 无法做到这一点。

    有了上述所有内容,您就可以在这里负责,准备好与您的应用程序一起使用的所有 nginx 和 uwsgi 内容。

    我喜欢在 EBS 多容器环境中让我们每天使用的所有应用程序都与 Docker 竞争。我们有 nginx、uwsgi,所以我们可以做任何我们需要的事情。

    【讨论】:

      猜你喜欢
      • 2017-09-01
      • 2019-04-21
      • 2014-12-22
      • 1970-01-01
      • 2015-03-20
      • 2015-07-28
      • 2016-01-04
      • 2015-03-12
      • 2014-07-17
      相关资源
      最近更新 更多