/ / Strategie wdrażania aplikacji Django - django, apache, wdrożenie internetowe

Strategie wdrażania aplikacji Django - django, apache, web-deployment

Mam pytanie, które jest prawdopodobnie bardziej ogólne niż rozwój związany z django. Tło jest dość proste:

Pracuję nad projektem, którego strony są w większościzwiązane z aplikacją internetową (do tego używam Django). Oprócz stron związanych z aplikacją istnieje jednak sporo stron pomocniczych (takich jak strona docelowa, strona z najczęściej zadawanymi pytaniami, strona kontaktowa itp.), Które w zasadzie nie mają nic wspólnego z aplikacją internetową.

Jaka jest standardowa strategia wdrażania takichprojekt? Błędne wydaje się kierowanie żądań do tych statycznych stron przez Django. Wydaje się, że sensowne jest prowadzenie dwóch serwerów: jednego odpowiedzialnego za uruchamianie aplikacji Django i osobnego serwera odpowiedzialnego za obsługę stron statycznych (w tym być może treści statycznych używanych przez część aplikacji na stronie internetowej).

Jakie są główne zasady, które należy stosować przy podejmowaniu tych decyzji?

Odpowiedzi:

4 dla odpowiedzi № 1

Często zdarza się, aby Django uruchamiać obok strony statycznej lub innego CMS-a.

Potrzebny byłby serwer front-end do kierowania żądania do zawartości statycznej lub do CMS.

Istnieją dwie wspólne strategie:

  1. Skorzystaj z prefiksu adresu URL, aby określić, dokąd kierować (np. przyklad.com/static/ do plików statycznych i przyklad.com/ do Django). Potrzebny byłby serwer front-end do przekierowania żądania do zawartości statycznej lub aplikacji internetowej / CMS napisanej w innym frameworku / języku (jest to skonfigurowane w dyrektywie Alias ​​w Apache).

  2. Umieść serwer aplikacji i statyczny serwer plikóww oddzielnej domenie / subdomenie (np. static.example.com do static i app.example.com do Django). Możesz to zrobić, konfigurując serwer frontonu do obsługi na pojedynczym komputerze (konfiguruje się go z VirtualHost na Apache) lub jako osobnym komputerze. W obu przypadkach konieczne będzie skonfigurowanie systemu DNS, aby wskazywał subdomeny na odpowiednie komputery.

Pierwszy z nich jest prostszy w konfiguracji, ale drugi pozwala lepiej skalować.

Serwery powszechnie używane do tworzenia front-endów serwera aplikacji obejmują Apache, Nginx lub uWSGI, ale może to zrobić każdy serwer sieciowy o jakości produkcyjnej.

W rzeczywistości dokumentacja wdrażania Django (np. Apache) zawsze instruuje cię, abyś miał swój statycznypliki obsługiwane przez serwer frontonu nawet w instalacjach zawierających tylko Django, ponieważ Django nie zostało zaprojektowane do wydajnego udostępniania treści statycznych, w przeciwieństwie do serwerów frontonu.

The django.contrib.staticfiles Aplikacja ma umożliwić Djangoodnoszą się do pliku statycznego hostowanego na innym serwerze i łatwo przełączają się między serwowaniem zawartości statycznej z wbudowanym serwerem Django podczas programowania, ale z serwerem front-end w produkcji.