Hosting Django z Nginx i Gunicorn na Linux

Hosting Django z Nginx i Gunicorn na Linux

Wstęp

Hostowanie aplikacji internetowych Django jest dość proste, choć może stać się bardziej złożone niż standardowa aplikacja PHP. Istnieje kilka sposobów obsługi tworzenia interfejsu Django z serwerem WWW. Gunikorn jest łatwo jeden z najprostszych.

Gunikorn (skrót od zielonego jednorożca) działa jak na serwerze pośredniego między serwerem WWW, Nginx w tym przypadku i samym Django. Obsługuje obsługę samej aplikacji, podczas gdy Nginx podnosi treść statyczną.

Gunikorn

Instalacja

Instalowanie gunikornu jest bardzo łatwe z PIP. Jeśli już skonfigurowałeś swój projekt Django za pomocą VirtualeNV, masz PIP i powinieneś znać sposób, w jaki działa. Zainstaluj Gunicorn w swoim Virtualenv.

$ pip instaluj gunikorn

Konfiguracja

Jedną z rzeczy, które sprawia, że ​​gunikorn jest atrakcyjnym wyborem, jest prostota jego konfiguracji. Najlepszym sposobem obsługi konfiguracji jest utworzenie Gunikorn folder w katalogu głównym projektu Django. Wewnątrz tego folderu utwórz plik konfiguracyjny.

W przypadku tego przewodnika zostanie nazywane gunikorn-conf.py. W tym pliku utwórz coś podobnego do poniższej konfiguracji.

Importuj multiprocessing bind = 'UNIX: /// tmp/gunicorn1.Sock 'Pracownicy = multiprocessing.cpu_count () * 2 + 1 REROOLOAL = True Daemon = True 

W przypadku powyższej konfiguracji Gunicorn utworzy gniazdo UNIX /tmp/gunicorn1.skarpetka. Zakręci także szereg procesów pracowniczych równoważnych z podwójną liczbą rdzeni procesora plus jeden. Będzie również automatycznie ponownie załadować i uruchomi się jako proces demonizowany.

Działanie

Polecenie uruchamiania gunikornu jest nieco długie, ale ma w nim określone dodatkowe opcje konfiguracji. Najważniejszą częścią jest wskazanie gunikorna na projekt .WSGI plik.

gunikorn -c gunicorn/gunicorn -conf.py -d --error -logfile gunikorn/błąd.Zaloguj się.WSGI

Powyższe polecenie powinno być uruchomione z korzenia projektu. Mówi gunikornowi, aby użył konfiguracji, którą utworzyłeś z -C flaga. -D Po raz kolejny określa, że ​​należy go demeemicznie. Ostatnia część określa lokalizację błędu Gunicorna w Gunikorn folder, który utworzyłeś. Polecenie kończy się informacją Gunicorn lokalizację .WSGIplik.

Nginx

Teraz, gdy Gunicorn jest skonfigurowany i uruchomiony, możesz skonfigurować Nginx, aby z nim połączyć i obsługiwać pliki statyczne. Ten przewodnik założy, że masz już skonfigurowane Nginx i że używasz osobnych serwer bloki dla hostowanych przez niego stron. Będzie również zawierać informacje o SSL.

Jeśli chcesz nauczyć się uzyskać bezpłatne certyfikaty SSL dla swojej witryny, spójrz na nasz przewodnik LetsEncrypt.

# Skonfiguruj połączenie z Gunicorn Upstream YourProject-Gunicorn Server UNIX:/TMP/GUNICORN1.SOCK FAID_TIMEOUT = 0;  # Przekieruj niezaszyfrowany ruch do zaszyfrowanego serwera witryny Słuchaj 80; Server_name YourWebsite.com; zwróć 301 https: // Yourwebsite.com $ request_uri;  # Główny serwer serwera serwera  # Ustaw port, aby słuchać i określ domenę, aby słuchać do słuchania 443 Domyślny SSL; client_max_body_size 4G; Server_name YourWebsite.com; # Określ lokalizacje dziennika Access_Log/var/log/nginx/YourWebsite.access_log main; error_log/var/log/nginx/yourwebite.Informacje o błędzie_log; # Punkt nginx do twojego SSL Certs SSL ON; SSL_Certificate/Etc/LetsEncrypt/Live/YourWebsite.com/Fullchain.pem; ssl_certificate_key/etc/limsecrrypt/na żywo/yourwebsite.com/privey.pem; # Ustaw główny katalog root/var/www/yourvirtualenv/yourProject; # Point nginx w plikach statycznych lokalizacja / static /  # autoIndex pliki, aby były przeglądane, jeśli chcesz włączyć autoIndex; # Lokalizacja plików alias/var/www/yourvirtualenv/yourProject/static/; # Skonfiguruj buforowanie plików statycznych wygasa 1m; access_log off; add_header Cache-Control „Public”; proxy_ignore_headers „set-Cookie”;  # Point nginx w przesłanych plikach lokalizacja / media / autoIndex Jeśli chcesz włączyć autoIndex; # Lokalizacja przesłanych plików alias/var/www/YourVirtualenv/YourProject/Media/; # Skonfiguruj ból przesyłanych plików wygasa 1m; access_log off; add_header Cache-Control „Public”; proxy_ignore_headers „set-Cookie”;  lokalizacja /  # Wypróbuj najpierw swoje pliki statyczne, a następnie przekieruj do gunicorn try_files $ uri @proxy_to_app; # Przejdź żądania do Gunicorn Location @Proxy_to_App proxy_set_header x-forwarted-for $ proxy_add_x_forwarded_for; proxy_set_header host $ http_host; Proxy_redirect Off; proxy_pass http: // njc-gunicorn;  # Buforing dla lokalizacji HTML, XML i JSON ~* \.(HTML?| XML | JSON) $ wygasa 1H;  # Buforing dla wszystkich innych lokalizacji zasobów statycznych ~* \.(jpg | jpeg | png | gif | iCo | css | js | ttf | wff2) $ wygasa 1m; access_log off; add_header Cache-Control „Public”; proxy_ignore_headers „set-Cookie”;  

Okej, więc to trochę dużo i może być o wiele więcej. Ważne punkty, na które należy zwrócić uwagę pod prąd blok, który wskazuje na gunikorn i Lokalizacja bloki, które przechodzą ruch do Gunicorn. Większość reszty jest dość opcjonalna, ale powinieneś to zrobić w jakiejś formie. Komentarze w konfiguracji powinny pomóc w specyfice.

Po zapisaniu tego pliku możesz ponownie uruchomić Nginx, aby zmiany w obowalniu.

# Systemctl restart nginx

Gdy Nginx wróci do trybu online, Twoja strona powinna być dostępna za pośrednictwem domeny.

Zamykanie myśli

Jest o wiele więcej, co można zrobić z Nginx, jeśli chcesz kopać głęboko. Dostarczone konfiguracje są jednak dobrym punktem wyjścia i są czymś, czego faktycznie możesz użyć. Jeśli jesteś przyzwyczajony do Apache i rozdętych aplikacji PHP, prędkość takiej konfiguracji serwera powinna być miła niespodzianka.

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Jak skonfigurować statyczny adres IP na Manjaro Linux
  • Linux Apache Nie wykonywanie plików PHP: Rozwiązanie
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Ubuntu 20.04: WordPress z instalacją Nginx
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Jak zainstalować PHP na Ubuntu Linux
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Instalacja OpenLitespeed WordPress
  • Jak utworzyć stos lampy na bazie Dockera za pomocą Dockera na…