Jak gościć Django z Nginx na Ubuntu 18.04 Bionic Beaver Linux

Jak gościć Django z Nginx na Ubuntu 18.04 Bionic Beaver Linux

Cel

Zainstaluj i skonfiguruj Ubuntu 18.04, aby hostować framework Django.

Rozkłady

Ubuntu 18.04

Wymagania

Działający instalacja Ubuntu 18.04 z uprawnieniami root

Trudność

Średni

Konwencje

  • # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
  • $ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Wstęp

Jeśli chcesz zbudować i hostować aplikacje internetowe z Pythonem, Django jest najpopularniejszym wyborem. Ponieważ Python jest tak ściśle zintegrowany z Linux, nie jest zbyt trudne, aby ustawić serwer Django na Ubuntu.

Nie ma jednego ustalonego sposobu na hosting projektów Django, ale stos składający się z PostgreSQL, Nginx, Gunicorn i Django jest prawie standardem.

Zainstaluj pakiety

Zanim zaczniesz, musisz zainstalować wymagane pakiety. Nie ma tak wielu, ale upewnij się, że wyłączasz Apache lub jakikolwiek inny serwer WWW działający na porcie 80 przed rozpoczęciem.

$ sudo apt instal Python3 Python3-venv nginx postgresql


Utwórz bazę danych

Będziesz także musiał utworzyć bazę danych do przechowywania informacji z aplikacji Django. Postgresql będzie wypełnić tę rolę. Jeśli nigdy wcześniej nie używałeś PostgreSQL, nie jest to tak samo jak MySQL. Jego składnia jest inna i inaczej obsługuje loginy użytkownika.

Aby zalogować się do PostgreSQL i zarządzać nim, musisz użyć Postgres Użytkownik na twoim komputerze, który został utworzony po zainstalowaniu pakietu PostgreSQL. Przełącz się na tego użytkownika z Su.

$ sudo su postgres

Gdy jesteś na Postgres Użytkownik, uzyskujesz dostęp do bazy danych z PSQL Komenda.

Po zalogowaniu należy dodać hasło do użytkownika administratora, zanim zrobisz cokolwiek innego.

Postgres =# Zmień postgres użytkownika z zaszyfrowanym hasłem „YourPassword”;

Następnie utwórz swoją bazę danych.

postgres =# Utwórz bazę danych swoją_db;

Utwórz nowego zwykłego użytkownika do zarządzania bazą danych. To jest użytkownik, z którym Django się zaloguje.

postgres =# Utwórz rolę django_user z zaszyfrowanym hasłem „YourPassword”;

Następnie udziel uprawnień użytkownika na korzystanie z bazy danych.

postgres =# daj wszystkie uprawnienia w bazie danych swoje_db do django_user;

Kiedy skończysz, wyjdź z \Q. Wyjdź Postgres użytkownik też.

Skonfiguruj swój katalog

Zazwyczaj nie jest to świetny pomysł, aby zainstalować pakiety Python w całym systemie. O wiele trudniej jest zarządzać wersjami pakietowymi i utrzymywać wszystko stabilne.

Python 3 obsługuje środowiska wirtualne, które pozwalają podzielić się na projekty Python według katalogu. Każde środowisko ma swój własny zestaw pakietów Python i możesz instalować je i zarządzać jako zwykłym użytkownikiem.

Wybierz miejsce, w którym chcesz hostować swoją stronę internetową. /var/www/relaite jest zwykle dobrym wyborem. Użyj wbudowanego polecenia, aby utworzyć środowisko wirtualne.

$ sudo python3 -m venv/var/www/relaite

Przejdź do swojego katalogu i aktywuj go.

$ cd/var/www/relaite $ Źródło/aktywuj

Kiedy skończysz w katalogu, możesz go łatwo dezaktywować.

$ dezaktywuj


Zainstaluj Django

Po uruchomieniu wirtualnego środowiska możesz zainstalować sam Django wraz z kilkoma innymi pakietami Python, które musisz podłączyć wszystko.

$ pip instaluj django psycopg2 gunikorn

Zajmie to kilka sekund, ale PIP zainstaluje wszystko, czego potrzebujesz, aby skonfigurować projekt Django.

Utwórz projekt Django

Teraz, gdy masz Django, możesz faktycznie stworzyć swój projekt. Upewnij się, że jesteś w wirtualnym środowisku i aktywujesz je.

$ django-admin startProject

Po uzyskaniu projektu musisz zmienić konfigurację, aby skonfigurować bazę danych. Django jest skonfigurowane do używania SQLite3 jako bazy danych. To bardziej do celów rozwojowych. Aby użyć PostgreSQL, będziesz musiał edytować główną konfigurację Django na Twój projekt/ustawienia/ustawienia.py. Znajdź ten plik i otwórz. Spójrz na Bazy danych blokuj i edytuj, aby wyglądać jak ten poniżej.

Bazy danych = 'default':  #'' silnik: 'django.db.Backends.sqlite3 ', #„name”: OS.ścieżka.dołącz (base_dir, 'db.sqlite3 '), „silnik”: „django.db.Backends.postgresql_psycopg2 ', „nazwa”: „your_db”, „użytkownik”: „django_user”, „hasło”: „yourPassword”, „host”: „localHost”, „port”: ",

Zapisz i wyjdź. Teraz możesz zastosować początkowe migracje i utworzyć użytkownika administratora. Wróć do katalogu głównego projektu i uruchom następujące polecenia Linux.

$ Python Manage.Py migruj $ Python Manage.PY CreateSuperuser

Skonfiguruj gunikorn

Konfiguracja gunikorna jest dość prosta, ale nadal ważne jest, aby zrobić. Stwórz Gunikorn katalog w korzeni Twojej witryny. Zasadniczo musisz powiedzieć, gdzie uruchomić gniazdo, ilu pracowników do odrodzenia i gdzie się zarejestrować. Utwórz plik Python o nazwie Gunicorn-Config.py, i spraw, aby wyglądało to coś w rodzaju tego poniżej.

Importuj multiprocessing bind = 'UNIX:/TMP/GUNICORN.Sock 'Pracownicy = multiprocessing.cpu_count () * 2 + 1 REROOLOAD = True Daemon = True AccessLog = './dostęp.log 'errorLog ='./błąd.dziennik'

Po ustawieniu tego, jak chcesz, zapisz i wyjdź.

Możesz uruchomić gunikorn od katalogu głównego projektu z poleceniem podobnym do tego:

$ gunicorn -c guinicorn/gunicorn -config.PY Your-Project.WSGI


Skonfiguruj Nginx

Cała konfiguracja Nginx spoczywa /etc/nginx. W tym katalogu jest mnóstwo plików, ale nie musisz się o nich martwić. Naprawdę potrzebujesz tylko /etc/nginx/nginx.conf oraz plik specyficzny dla witryny, na który tworzysz /etc/nginx/witryny-dostępny/Twój miejsce. W rzeczywistości główna konfiguracja Nginx nie jest taka konieczna, chyba że chcesz zoptymalizować swoją witrynę w produkcji. Tak naprawdę nie musisz się z tym zadzierać, aby uruchomić witrynę.

Utwórz więc plik dla swojej witryny pod adresem /etc/nginx/witryny-dostępny/Twój miejsce.

Pierwszym elementem potrzebnego pliku jest pod prąd blok. Ten blok mówi Nginx, że kod aplikacji internetowej jest uruchamiany gdzie indziej (w tym przypadku Gunicorn) i powinien wymieniać żądania z tym gniazdem lub adresem.

Upstream Your-Gunicorn Server Unix:/TMP/Gunicorn.SOCK FAID_TIMEOUT = 0; 

Ten blok mniej więcej tworzy zmienną na podstawie nazwy określonej później pod prąd i przypisuje mu wartość serwera docelowego. Serwer może być gniazdo UNIX lub adres IP i numer portu. Ponieważ gunikorn będzie działał lokalnie, korzystanie z gniazda Unix jest lepsze. Pamiętaj, że ustawiasz to wcześniej w konfiguracji gunikornu, więc wskazujesz na to konfigurację Nginx.

Następnie możesz przejść do głównego bloku dla Nginx, serwer blok. Dodaj to.

serwer  

Podstawowe opcje informują Nginx, na jakim porcie słuchać i na jakim adresie URL należy zwrócić uwagę.

Posłuchaj 80 domyślnych; client_max_body_size 4G; Server_name Your Site.com; KeepAlive_Timeout 70;

Następnie dodaj lokalizacje dziennika.

access_log/var/log/nginx/twój witryna.access_log main; error_log/var/log/nginx/twój witryna.Informacje o błędzie_log;

Punkt nginx w katalogu głównym witryny.

root/var/www/virtualenv/your-site;

Gunikorn nie obsługuje plików statycznych, więc musisz skonfigurować Nginx, aby obsłużyć pliki statyczne witryny. Dokładnie tam, gdzie znajdują się te pliki, jest określone w pliku Ustawienia Django. Zwykle istnieją dwa katalogi, jeden dla plików statycznych witryny, a drugi dla przesłanych plików. Bloki mają tę samą strukturę. Poniższy przykład zakłada, że ​​twoje pliki statyczne istnieją w katalogu o nazwie statyczny w korzeni twojego projektu.

lokalizacja / static / autoIndex on; alias/var/www/virtualenv/your-site/static/; wygasa 1m; access_log off; add_header Cache-Control „Public”; proxy_ignore_headers „set-Cookie”; 

Istnieje kilka innych opcji, które mają dobre domyślne buforowanie.

Następny Lokalizacja Blok, którego potrzebujesz. Tak jak pod prąd Ustawia kolejną zmienną i mówi jej, aby przekazać połączenia z blokiem w górę.

lokalizacja @Proxy_to_App proxy_set_header x-forwarded-for $ proxy_add_x_forwarded_for; proxy_set_header host $ http_host; Proxy_redirect Off; proxy_pass http: // Your-Gunicorn; 

Wreszcie, skonfiguruj blok, który mówi Nginx, aby szukał plików statycznych, aby pasowały do ​​wszelkich przychodzących żądań. Jeśli nie zostanie znalezione, przełóż to na gunikorn.

lokalizacja / try_files $ uri @proxy_to_app; 

To wszystko, czego absolutnie potrzebujesz. Możesz zrobić o wiele więcej dostrajania wydajności, ale nie jest to niezbędne, aby Django działał. Zapisz i wyjdź.

Utwórz łącze między nowym plik a witryny z obsługą teczka. Usuń istniejący domyślny plik tam.

$ sudo rm/etc/nginx/witryny-obsługuje/domyślny $ sudo ln -s/etc/nginx/witryny-dostępny/your-site/etc/nginx/witryny/obsług

Uruchom ponownie Nginx.

$ sudo systemctl restart nginx

Do tej pory powinieneś być w stanie otworzyć przeglądarkę i zobaczyć domyślną stronę Django.

Zamykanie myśli

W porządku, więc była to długa droga. To, czy chcesz przejść przez tak dużą konfigurację na serwerze programistycznym, zależy całkowicie od Ciebie. Do produkcji stanowi jednak solidną podstawę do hostowania projektów Django. Pamiętaj jednak, że zdecydowanie większa optymalizacja można zrobić zarówno w konfiguracji Django, jak i nginx.

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Ubuntu 20.04: WordPress z instalacją Nginx
  • Rzeczy do zainstalowania na Ubuntu 22.04
  • Jak sprawdzić status Nginx na Ubuntu
  • Jak zainstalować Nginx w Linux
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 22.04 JAMMY Jellyfish…
  • Jak sprawdzić wersję Nginx w Linux
  • Ubuntu 20.04 Przewodnik
  • Ubuntu 20.04 sztuczki i rzeczy, których możesz nie wiedzieć