Hosting Django z Nginx i Gunicorn na Linux
- 2860
- 94
- Juliusz Janicki
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ę .WSGI
plik.
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…
- « Jak zainstalować zestaw programistyczny Java SE na Debian Linux
- Uczenie się poleceń Linux Netstat »