/ Strategien zur Bereitstellung der Django-App - Django, Apache, Web-Bereitstellung

Strategien für die Bereitstellung von Django App - Django, Apache, Web-Bereitstellung

Ich habe eine Frage, die wahrscheinlich allgemeiner ist als die Entwicklung von Django. Der Hintergrund ist ziemlich einfach:

Ich arbeite an einem Projekt, dessen Seiten meistens sindverbunden mit einer Webanwendung (dies ist, wofür ich Django verwende). Neben den App-bezogenen Seiten gibt es jedoch einige Hilfsseiten (z. B. eine Landing-Page, eine FAQ-Seite, eine Kontaktseite usw.), die im Grunde nichts mit der Web-App zu tun haben.

Was ist die Standardstrategie für die Bereitstellung von zein Projekt? Es scheint fehlerhaft, Anfragen an diese statischen Seiten durch Django weiterzuleiten. Es scheint sinnvoll zu sein, zwei Server zu betreiben: einen für die Ausführung der Django-App und einen separaten Server, der für die Bereitstellung der statischen Seiten verantwortlich ist (einschließlich des statischen Inhalts, der vom App-Teil der Website verwendet wird).

Welche Leitsätze sollten bei diesen Entscheidungen angewendet werden?

Antworten:

4 für die Antwort № 1

Es ist nicht ungewöhnlich, Django neben einer statischen Site oder einem anderen CMS auszuführen.

Sie benötigen einen Front-End-Server, um die Anforderung entweder an den statischen Inhalt oder an einen CMS weiterzuleiten.

Es gibt zwei gängige Strategien:

  1. Verwenden Sie das URL-Präfix, um zu bestimmen, wohin die Route geleitet werden soll (z. B. example.com/static/ zu statischen Dateien und example.com/ zu Django). Sie benötigen einen Front-End-Server, um die Anforderung entweder an den statischen Inhalt oder an eine Webanwendung / ein CMS weiterzuleiten, die in einem anderen Framework / einer anderen Sprache geschrieben sind (dies ist mit der Alias-Anweisung in Apache konfiguriert).

  2. Platzieren Sie den Anwendungsserver und den statischen Dateiserverauf einer separaten Domäne / Subdomain (z. B. static.example.com zu static und app.example.com zu Django). Sie können dies tun, indem Sie einen Front-End-Server so konfigurieren, dass er auf einem einzelnen Computer (dieser ist mit VirtualHost auf Apache konfiguriert) oder als separater Computer konfiguriert wird. In beiden Fällen müssen Sie den DNS so konfigurieren, dass er auf Ihre Subdomains auf die richtigen Computer verweist.

Ersteres ist einfacher einzurichten, aber letzteres lässt Sie besser skalieren.

Zu den für das Front-Ending eines Anwendungsservers häufig verwendeten Servern gehören Apache, Nginx oder uWSGI, aber praktisch jeder Webserver in Produktionsqualität kann dies.

In der Tat ist Djangos Bereitstellungsdokumentation (z. Apache) würde Sie immer anweisen, Ihre Statik zu habenDateien, die vom Front-End-Server selbst in einer Installation von Django bereitgestellt werden, da Django nicht für die effiziente Bereitstellung statischer Inhalte im Gegensatz zu den Front-End-Webservern konzipiert wurde.

Das django.contrib.staticfiles App ist da, um es Django zu ermöglichenVerweisen Sie auf eine statische Datei, die auf einem anderen Server gehostet wird, und wechseln Sie einfach zwischen dem Bereitstellen statischer Inhalte mit dem integrierten Django-Server während der Entwicklung, wobei der Front-End-Server jedoch in Produktion ist.