2017-09-17 2 views
1

Ich arbeite an der Erstellung einer Django Web App mit Ressourcen auf AWS. Ich bin neu im Deployment und in meinem Produktions-Setup (Elastic Beanstalk, d. H. ELB-basiert) möchte ich mich vom Django-Entwicklungs-Webserver entfernen und stattdessen Nginx + Gunicorn verwenden. Ich habe über sie und auch über ELB gelesen.AWS elastische Bohnenstange + Nginx + Gunicorn

Wird Nginx + Gunicorn benötigt, wenn ich meine Django-App auf ELB verwende? Wie ELB kommt mit Reverse-Proxy, automatische Skalierung, Lastverteilung usw.

schätzen die Eingänge.

+0

Wenn Sie ELB verwenden, ist der Anwendungsfall von ELB, dass Sie diese nicht konfigurieren müssen und sich mehr Gedanken darum machen, den Code richtig zu machen. –

Antwort

0

Wenn Django Bereitstellen eines der empfohlenen Einsatzmethoden verwendet WSGI (siehe Deploying Django).

Diese Methode der Bereitstellung von Django wird auch von AWS Elastic Beanstalk gut unterstützt, und sie haben sogar eine Deploying a Django Application to Elastic Beanstalk.

Auf einem hohen Niveau, möchten Sie folgendes tun:

  1. Erstellen einer virtuellen Umgebung (mit virtualenv) den Überblick über Ihre Python-Abhängigkeiten zu halten, wie Sie
  2. Konfigurieren Sie Ihr Projekt für Elastic Beanstalk entwickeln. Dies beinhaltet das Einfrieren Ihres virtualenv in eine requirements.txt Datei und das Konfigurieren von EB Extensions für djangos WSGI.
  3. Verwenden Sie die EB CLI, um Ihr Projekt zu initialisieren und eine Umgebung zu erstellen.

Hinter den Kulissen Elastic Beanstalk-Verkehr mit Apache zu akzeptieren, wird die Instanzen, Elastic Load Balancer, etc, sowie konfigurieren Sie die Instanzen drehen, dann die mod_wsgi Apache verwenden, um Verkehr für Django zu behandeln.

0

Sie benötigen definitiv noch einige Reverse-Proxy auf Ihrer Anwendungsebene. Während ELB keinen spezifischen Reverse-Proxy hat, würde Application Load Balancer (ALB) den Bedarf an einem geeigneten Reverse-Proxy ersetzen, da er es ermöglicht, pfadbasiertes Routing zu definieren. Trotzdem ist es in diesem Fall kein vollständiger Ersatz für nginx. Mit nginx sind Sie mit Werkzeugen ausgestattet, die Ihnen erlauben, fast unbegrenzte Dinge zu tun, die von Ihrer Anwendung benötigt werden, da sie weiter wächst, wenn der ernsthafte Verkehr ins Spiel kommt.

Darüber hinaus, für Django Anwendung auf Produktion möchten Sie es definitiv mit einigen uwsgi zum Beispiel ausführen, da es in der Lage ist, Verkehr jeden "Entwicklung" Server zu behandeln, wie der mit Django geliefert wurde nicht tun konnte.

Mit all den oben beschriebenen Dingen, sind Sie in der Lage, die Ladung hier zu haben, indem Sie alle diese nginx und uwsgi Zeug bereit, um mit Ihrer Anwendung zu gehen.

Ich liebe es, alle Anwendungen, die wir täglich tun, mit Docker auf EBS Multi-Container-Umgebung zu konkurrieren. Da haben wir nginx, uwsgi, also können wir alles tun, was wir brauchen.

Verwandte Themen