Django je bezplatný a open-source framework pro webové aplikace, který je postaven v jazyce Python programovacím jazyce. Django je super rychlý, bezpečný a vysoce škálovatelný. V rukou zkušeného vývojáře dokáže Django rychle vytvořit výkonný web. Lze jej bezproblémově integrovat s populárními webovými servery (Apache, Nginx), a databázemi (MySQL, MariaDB, PostgreSQL, Oracle, a SQLite), atd. Django pohání některé z největších světových webů, jako je Instagram, Mozilla a NASA. Tento návod ukazuje nastavení základu webové aplikace s pomocí Django s PostgreSQL, Nginx a Gunicorn na Ubuntu 20.04.
Požadavky
Tento návod vyžaduje, abyste měli spuštěný server Ubuntu 20.04 nakonfigurovaný se základním firewallem a uživatelem bez oprávnění root s právy sudo. Podívejte se na tento podrobný návod na jak nastavit server Ubuntu. Podle tohoto návodu nakonfigurujte uživatele bez oprávnění root s právy sudo. Můžete také nakonfigurovat firewall Iptables podle kroků v tomto návodu.
Django budeme instalovat ve virtuálním prostředí. Prostředí specifické pro projekt umožňuje snadnější správu více projektů ze stejného serveru. Jakmile budou databáze a aplikace na svém místě, nasadíme aplikační server Gunicorn. Gunicorn bude aplikační rozhraní, které překládá požadavky klientů z HTTP na volání Pythonu, která naše aplikace může využít. Poté před Gunicorn nasadíme Nginx pro jeho rychlé zpracování připojení a snadno implementovatelné bezpečnostní funkce.
Instalace potřebných balíčků
Nejprve začněte instalací všech potřebných balíčků. Naštěstí jsou všechny tyto balíčky přímo dostupné z oficiálních repozitářů balíčků Ubuntu. Otevřete terminál a aktualizujte mezipaměť balíčků APT:
|
1 |
sudo apt update |
Seznam balíčků závisí na tom, zda bude webová aplikace používat Python 2 nebo Python 3. Spuštěním následujícího příkazu nainstalujete Django s Pythonem 3:
|
1 |
sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx curl |
Django 1.11 LTS je poslední verzí Django, která bude podporovat Python 2. Pokud hodláte používat Django s Pythonem 2, nainstalujte následující balíčky:
|
1 |
sudo apt install python-pip python-dev libpq-dev postgresql postgresql-contrib nginx curl |
Databáze a uživatel PostgreSQL
Pokud jde o databázové řešení, budeme používat PostgreSQL. Je to výkonný, open-source objektově-relační databázový systém. PostgreSQL nabízí spolehlivost, robustnost a výkon. Podrobné kroky k nastavení PostgreSQL naleznete v tomto návodu na nastavení PostgreSQL na serveru Ubuntu. V tomto návodu nastavíme vyhrazenou databázi a uživatele pro naši aplikaci Django.
Ve výchozím nastavení PostgreSQL implementuje „peer authentication“ jako schéma ověřování pro lokální připojení. Stručně řečeno, „peer authentication“ ověří přihlášení, pokud se uživatelské jméno v operačním systému shoduje s platným uživatelským jménem PostgreSQL. Během instalace PostgreSQL nakonfiguroval uživatele operačního systému postgres tak, aby odpovídal postgres administrátorskému uživateli PostgreSQL. Přihlaste se do interaktivní relace shellu PostgreSQL jako postgres pomocí následujícího příkazu:
|
1 |
sudo -u postgres psql |
Ocitnete se v příkazovém řádku PostgreSQL. Prvním krokem je vytvoření vyhrazené databáze pro projekt. Pro účely ukázky se databáze bude jmenovat viktor_project:
|
1 |
CREATE DATABASE viktor_project; |
Dalším krokem je vytvoření vyhrazeného uživatele pro projektovou databázi. Uživatel by měl mít silné uživatelské jméno. Pro účely ukázky bude uživatelské jméno viktor_project_user:
|
1 |
CREATE USER viktor_project_user WITH PASSWORD 'password123'; |
Nyní upravíme některé parametry:
- Určité parametry připojení. Stručně řečeno, nebude nutné dotazovat a nastavovat správné hodnoty při každém navázání připojení. To výrazně zlepšuje výkon databáze.
- Výchozí kódování na
UTF-8. Je to univerzální kódování a Django ho očekává. - Výchozí schéma izolace transakcí na „read committed“. Blokuje čtení z nepotvrzených transakcí.
- Časové pásmo na
UTC.
Všechny tyto změny parametrů jsou doporučeny samotným projektem Django. Chcete-li tyto změny implementovat, spusťte následující příkazy. Nezapomeňte změnit uživatelské jméno databáze na to správné:
|
1 2 3 |
ALTER ROLE viktor_project_user SET client_encoding TO 'utf8'; ALTER ROLE viktor_project_user SET default_transaction_isolation TO 'read committed'; ALTER ROLE viktor_project_user SET timezone TO 'UTC'; |
Změňte administrátora databáze na vyhrazeného databázového uživatele:
|
1 |
GRANT ALL PRIVILEGES ON DATABASE viktor_project TO viktor_project_user; |
Naše práce s PostgreSQL je prozatím hotová. Ukončete interaktivní shell PostgreSQL:
|
1 |
\q |
Virtuální prostředí Pythonu
S připravenou databází se nyní můžeme zaměřit na nastavení zbývajících požadavků projektu. Pro snazší správu vytvoříme virtuální prostředí a nainstalujeme do něj všechny požadavky Pythonu. K vygenerování virtuálního prostředí potřebujeme virtualenv. Lze jej snadno nainstalovat pomocí pip.
Následující příkazy aktualizují pip a nainstalují virtualenv. Pro Python 3 spusťte následující příkazy:
|
1 2 |
sudo -H pip3 install --upgrade pip sudo -H pip3 install virtualenv |
Pro Python 2 místo toho spusťte následující příkazy:
|
1 2 |
sudo -H pip install --upgrade pip sudo -H pip install virtualenv |
Jakmile je virtualenv nainstalován, je čas vytvořit virtuální prostředí. Dále vytvořte vyhrazený adresář pro virtuální prostředí:
|
1 |
mkdir -v ~/viktor_project |
Poté změňte aktuální aktivní adresář na vyhrazený adresář pro virtuální prostředí:
|
1 |
cd ~/viktor_project |
V tomto adresáři spusťte následující příkaz. Nástroj virtualenv vytvoří virtuální prostředí s názvem projektu:
|
1 |
virtualenv viktor_project |
Vytvoří podadresář s názvem projektu. Tento podadresář bude obsahovat lokální verzi Pythonu a pip. To nabízí flexibilitu pro instalaci a konfiguraci izolovaného prostředí Pythonu pro daný projekt.
Následující příkaz aktivuje virtuální prostředí:
|
1 |
source viktor_project/bin/activate |
Výzva terminálu se změní, což indikuje, že pracujete ve virtuálním prostředí Pythonu. Nyní, když jsme ve virtuálním prostředí, nainstalujeme potřebné požadavky Pythonu. Potřebujeme Django, Gunicorn a psycopg2 (adaptér pro PostgreSQL). Následující příkaz nařídí lokálnímu pipu nainstalovat tyto komponenty:
|
1 |
pip install django gunicorn psycopg2-binary |
I když používáte Python 3, pip je správný příkaz. Je to proto, že ve virtuálním prostředí je pip3 přejmenován na pip.
Nový projekt Django
S připravenými komponentami Pythonu můžeme začít pracovat se samotnými soubory projektu Django.
-
Vytvoření projektu Django
Adresář projektu je již vytvořen. Řekneme Djangu, aby tam nainstalovalo své soubory. Tento postup vygeneruje adresář druhé úrovně obsahující samotný kód. Adresář bude také obsahovat spouštěcí skript pro správu. Klíčové je, že Djangu explicitně sdělujeme cílový adresář, místo abychom ho nechali rozhodnout o adresáři relativně k aktuálnímu:
|
1 |
django-admin.py startproject viktor_project ~/viktor_project |
Django podle toho vytvoří projekt. Zde jsou některé z důležitých souborů a adresářů, na které se zaměříme. Názvy adresářů a souborů jsou použity podle ukázky.
~/viktor_project/manage.py: Skript pro správu projektu od Django.~/viktor_project/viktor_project/: Je to balíček obsahující projekt Django. Měl by obsahovat soubory __init__.py, settings.py, urls.py, asgi.py a wsgi.py.
-
Úprava nastavení projektu
Po vytvoření projektu je prvním krokem úprava jeho konfigurace. Otevřete settings.py v textovém editoru:
|
1 |
nano ~/viktor_project/viktor_project/settings.py |
První direktiva, kterou hledáme, je ALLOWED_HOSTS. Definuje servery nebo doménová jména, která se mohou připojit k instanci Django. Pokud jakýkoli příchozí požadavek s hlavičkou Host neodpovídá seznamu ALLOWED_HOSTS, vyvolá to výjimku. Django to doporučuje, aby se předešlo určitým typům bezpečnostních zranitelností:
|
1 |
ALLOWED_HOSTS = ['<server_ip_or_domain_name_1>',' server_ip_or_domain_name_2','localhost'] |
Další sekce, na kterou se zaměříme, je DATABASE. Spravuje přístup k databázi. Ve výchozím nastavení obsahuje konfiguraci pro databázový stroj SQLite. Pro projekt však použijeme databázi PostgreSQL. Django bude pro komunikaci s PostgreSQL používat adaptér psycopg2:
|
1 2 3 4 5 6 7 8 9 10 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'viktor_project', 'USER': 'viktor_project_user', 'PASSWORD': 'password123', 'HOST': 'localhost', 'PORT': '', } } |
Nyní přejděte na konec souboru. Přidejte následující řádky, které určují umístění statických souborů. To pomůže Nginx zpracovávat požadavky na tyto položky:
|
1 2 |
import os STATIC_ROOT = os.path.join(BASE_DIR, 'static/') |
Naše práce s settings.py je prozatím hotová. Soubor uložte a zavřete editor.
-
Dokončení počátečního nastavení projektu
Nyní můžeme migrovat počáteční schéma databáze do vyhrazené databáze PostgreSQL. Spusťte následující příkaz:
|
1 2 |
~/viktor_project/manage.py makemigrations ~/viktor_project/manage.py migrate |
Dále musíme pro projekt vytvořit superuživatele. Chcete-li vygenerovat superuživatele, spusťte následující příkaz:
|
1 |
~/viktor_project/manage.py createsuperuser |
Shromážděte všechny statické soubory do umístění, které jsme určili v settings.py. Statické soubory budou shromážděny v samostatném adresáři s názvem „static“ v adresáři projektu:
|
1 |
~/viktor_project/manage.py collectstatic |
Nyní si musíme pohrát s firewallem serveru. Pokud jste postupovali podle návodu ke konfiguraci serveru, máte již UFW nakonfigurovaný a aktivovaný. Vytvoříme výjimku pro port 8000. To je výchozí port, který Django používá. Podívejte se na tento návod, kde se dozvíte více o základech a použití firewallu UFW.
|
1 |
sudo ufw allow 8000 |
Next, verify the action:
|
1 |
sudo ufw status |
Nakonec můžeme otestovat server v akci. Spusťte vývojový server Django:
|
1 |
~/viktor_project/manage.py runserver 0.0.0.0:8000 |
Pokud konfigurace proběhla úspěšně, vývojový server Django by se měl spustit a přijímat příchozí požadavky. Otevřete prohlížeč a přejděte na IP/doménu vašeho serveru na portu 8000:
|
1 |
http://<server_or_domain>:8000 |
Měli byste se dostat na výchozí indexovou stránku Django. Pro přístup do administračního panelu přidejte na konec URL /admin. Administrační panel je přístupný pouze pro superuživatele, kterého jsme vytvořili dříve:
|
1 |
http://<server_or_domain>:8000/admin |
Po přihlášení se ocitnete na výchozím administračním rozhraní Django:
Prozatím jsme s testováním skončili. Chcete-li server zastavit, stiskněte v okně terminálu „Ctrl + C“.
-
Testování Gunicornu
Před opuštěním virtuálního prostředí se chceme ujistit, že Gunicorn dokáže aplikace obsluhovat. Způsob, jak to otestovat, je použít Gunicorn k načtení modulu WSGI projektu.
Příkaz Gunicorn se nachází v adresáři projektu:
|
1 2 |
cd ~/viktor_project gunicorn --bind 0.0.0.0:8000 viktor_project.wsgi |
Tím se spustí Gunicorn na stejném rozhraní, na kterém běžel Django. Aplikaci můžeme znovu otestovat z běžného webového prohlížeče. Upozorňujeme, že administrační rozhraní nebude mít aplikované žádné styly, protože Gunicorn stále neví, jak najít statický obsah CSS:
|
1 |
http://<server_or_domain>:8000 |
Po dokončení stiskněte v okně terminálu „Ctrl + C“ pro zastavení serveru Gunicorn.
-
Ukončení virtuálního prostředí
Konfigurace aplikace Django je dokončena. Spuštěním následujícího příkazu ukončíte virtuální prostředí:
|
1 |
deactivate |
Soubory soketu a služby Gunicorn
Ověřili jsme, že Gunicorn dokáže s aplikací Django komunikovat. Potřebujeme však robustnější způsob správy aplikačního serveru. Zde přichází na řadu systemd. Systemd je jedním z nejpopulárnějších init systémů dostupných v Linuxu. Zde je podrobný návod na jak spravovat služby a jednotky systemd.
Můžeme vytvořit soubory soketu a služby pro Gunicorn, aby jej systemd mohl spravovat, jako by to byla služba. Při spuštění se vygeneruje soket Gunicorn. Soket bude naslouchat příchozím připojením. Jakmile dojde k připojení, systemd spustí procesy Gunicorn pro zpracování tohoto připojení.
-
Soket Gunicorn
Začněme vytvořením soketu Gunicorn. Soubor je nutné vytvořit s oprávněním sudo:
|
1 |
sudo nano /etc/systemd/system/gunicorn.socket |
Do souboru vložte následující kód:
|
1 2 3 4 5 6 7 |
[Unit] Description=gunicorn socket [Socket] ListenStream=/run/gunicorn.sock [Install] WantedBy=sockets.target |
Jak vidíte, kód se skládá ze tří částí.
[Unit]:Tato část popisuje soket.[Socket]:Definuje umístění soketu.[Install]:Tato část zajišťuje, že systemd vytvoří soket ve správný čas.
Uložte soubor a zavřete editor.
-
Služba Gunicorn
Dále vytvoříme soubor služby pro Gunicorn. Podobně jako soubor soketu musí být i tento vytvořen s oprávněním sudo:
|
1 |
sudo nano /etc/systemd/system/gunicorn.service |
Vložte následující kód:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[Unit] Description=gunicorn daemon Requires=gunicorn.socket After=network.target [Service] User=cloudsigma Group=www-data WorkingDirectory=/home/cloudsigma/viktor_project ExecStart=/home/cloudsigma/viktor_project/viktor_project/bin/gunicorn \ --access-logfile - \ --workers 3 \ --bind unix:/run/gunicorn.sock \ viktor_project.wsgi:application [Install] WantedBy=multi-user.target |
Kód obsahuje několik částí:
[Unit]:Tato část specifikuje metadata a závislosti. Popisuje také spuštění až po dosažení síťového cíle.[Service]:Tato sekce určuje uživatele a skupinu, pod kterými bude proces spuštěn. Vlastnictví skupiny je nastaveno na „www-data“, aby Nginx mohl komunikovat s Gunicornem. Mapuje také pracovní adresáře a specifikuje spouštěcí příkazy.[Install]:Tato sekce říká systemd, s čím má tuto službu propojit, pokud je povolena při spuštění. Měla by se spustit poté, co začne běžet běžný víceuživatelský systém.
Dále soubor uložte a zavřete editor.
-
Povolení socketu Gunicorn
Socket Gunicorn je připraven k použití. Proto můžete spustit následující příkazy. Spustí a povolí socket. Soubor socketu bude vytvořen v /run/gunicorn.sock při spuštění. Jakmile dojde k připojení k socketu, systemd spustí službu Gunicorn, aby jej obsloužila:
|
1 2 |
sudo systemctl start gunicorn.socket sudo systemctl enable gunicorn.socket |
Zkontrolujte stav socketu Gunicorn:
|
1 |
sudo systemctl status gunicorn.socket |
Nyní zkontrolujte existenci souboru socketu:
|
1 |
file /run/gunicorn.sock |
Pokud stav ze systemctl ukazuje chybu nebo soubor gunicorn.sock nebyl nalezen, znamená to, že socket nebyl vytvořen správně. Podívejte se na podrobný protokol pro nápovědu:
|
1 |
sudo journalctl -u gunicorn.socket |
Nezapomeňte se znovu podívat na soubor gunicorn.socket kvůli potenciálním chybám.
-
Aktivace socketu
Zatím jsme spustili gunicorn.socket . Bez jakéhokoli požadavku na připojení se však gunicorn.service neaktivuje. Dále ověřte stav Gunicornu:
|
1 |
sudo systemctl status gunicorn |
Mechanismus aktivace socketu můžeme otestovat odesláním požadavku na připojení pomocí curl:
|
1 |
curl --unix-socket /run/gunicorn.sock localhost |
Měli byste obdržet HTML výstup z aplikace. To znamená, že Gunicorn se úspěšně spustil a byl schopen obsloužit aplikaci Django. Ověřte aktuální stav služby Gunicorn:
|
1 |
sudo systemctl status gunicorn |
Pokud dojde k neočekávanému chování nebo výstupu (indikujícímu chybu), podívejte se na podrobné protokoly pro nápovědu:
|
1 |
sudo journalctl -u gunicorn |
Pokud byly v souboru gunicorn.service provedeny změny, musíte znovu načíst démona, aby znovu přečetl definici služby. Vyžaduje to také restartování služby Gunicorn:
|
1 2 |
sudo systemctl daemon-reload sudo systemctl restart gunicorn |
Konfigurace Nginx
Nyní nakonfigurujeme Nginx tak, aby předával příchozí provoz procesu. Nejprve vytvořte nový blok serveru v Nginx:
|
1 |
sudo nano /etc/nginx/sites-available/viktor_project |
Poté zadejte následující kód:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
server { listen 80; server_name 31.171.250.71; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/cloudsigma/viktor_project; } location / { include proxy_params; proxy_pass http://unix:/run/gunicorn.sock; } } |
Zde je několik bloků v konfiguraci:
service:Tento blok definuje, že server by měl normálně naslouchat na portu 80 a měl by odpovídat na doménové jméno nebo IP adresu serveru.location:Toto je první položka location. Definuje, kde hledat statické soubory.location:Toto je druhá položka location. Tento blok definuje standardní parametry proxy a způsob předávání provozu do socketu Gunicorn.
Uložte soubor a zavřete editor. Pro aktivaci propojte soubor s adresářem „sites-enabled“:
|
1 |
sudo ln -s /etc/nginx/sites-available/viktor_project /etc/nginx/sites-enabled |
Poté otestujte, zda v konfiguraci Nginx není nějaká syntaktická chyba:
|
1 |
sudo nginx -t |
Pokud jste nenašli chybu, restartujte Nginx, aby se změna projevila:
|
1 |
sudo systemctl restart nginx |
Musíme znovu upravit pravidla UFW. Přístup k vývojovému serveru již nepotřebujeme, takže můžeme odebrat výjimku pro port 8000. Kromě toho chceme otevřít port 80 pro běžný provoz:
|
1 2 |
sudo ufw delete allow 8000 sudo ufw allow 'Nginx Full' |
Ověřte tyto změny pravidel firewallu:
|
1 |
sudo ufw status |
Server by nyní měl být přístupný z běžného webového prohlížeče.
Postupy při odstraňování problémů
Pokud byly všechny kroky správně dodrženy, měla by být aplikace Django přístupná přes internet. Pokud tomu tak není, znamená to, že instalace neproběhla podle plánu. Musíme provést diagnostiku, abychom zjistili zdroj problému.
-
Nginx zobrazuje výchozí stránku
Pokud Nginx zobrazuje výchozí stránku namísto proxy aplikace, obvykle to znamená, že server_name byl v bloku serveru nakonfigurován špatně.
V tomto příkladu je blok serveru uložen na následujícím místě:
|
1 |
/etc/nginx/sites-available/viktor_project |
Záznam server_name určuje, který blok serveru Nginx použije k odpovídání na požadavky. Pokud se zobrazuje výchozí stránka, pak Nginx pravděpodobně nedokázal přiřadit požadavek k explicitnímu bloku serveru, takže se místo toho vrací k výchozímu bloku:
|
1 |
/etc/nginx/sites-available/default |
Zkontrolujte, zda má blok serveru vašeho projektu Django správný server_name.
-
502 Bad Gateway
Chyba 502 značí, že Nginx nedokázal úspěšně předat požadavek přes proxy. Existuje široká škála možných problémů s konfigurací, které mohou vést k chybě 502, takže k řádnému vyřešení problému potřebujeme vodítka.
Hlavním zdrojem vodítek jsou chybové protokoly Nginx. Obecně napoví, jaké podmínky způsobily problémy během proxy. Zkontrolujte chybový protokol Nginx pomocí následujícího příkazu:
|
1 |
sudo tail -F /var/log/nginx/error.log |
Jakmile se protokol otevře, zkuste k serveru přistoupit znovu. Mělo by to v protokolu vygenerovat novou chybovou zprávu. To může pomoci zúžit problém. Zde je několik možných zpráv:
- connect() to unix:/run/gunicorn.sock failed (2: No such file or directory)
To znamená, že Nginx nemohl najít gunicorn.sock na místě definovaném v konfiguraci. Umístění je popsáno direktivou proxy_pass v bloku webu. Zkontrolujte, zda proxy_pass ukazuje na správné umístění gunicorn.sock vygenerovaného jednotkou systemd gunicorn.socket:
|
1 |
/etc/nginx/sites-available/viktor_project |
Pokud gunicorn.sock nebyl nalezen v adresáři /run, znamená to, že jej systemd nemohl vygenerovat. Měli byste znovu zkontrolovat kroky konfigurace souboru soketu Gunicorn.
- connect() to unix:/run/gunicorn.sock failed (13: Permission denied)
To znamená, že se Nginx nemohl připojit k soketu Gunicorn kvůli problémům s oprávněními. To se může stát, pokud byl proces proveden jako uživatel root namísto uživatele sudo uživatele. Přestože systemd úspěšně vygeneroval gunicorn.sock, Nginx jej nemůže použít.
Jedním z možných viníků mohou být omezená oprávnění mezi kořenovým adresářem (/) a souborem gunicorn.sock . Zkontrolujte oprávnění a vlastnictví souboru soketu a každého z jeho nadřazených adresářů:
|
1 |
namei -l /run/gunicorn.sock |
První sloupec popisuje oprávnění k souboru. Druhý sloupec popisuje vlastníka (uživatele) a třetí sloupec vlastníka (skupinu). Pokud jakýkoli z adresářů vedoucích k gunicorn.sock nemá správná oprávnění pro čtení a spouštění, Nginx k soketu nebude moci přistoupit.
-
Django zobrazuje „could not connect to the server: Connection refused“
To znamená, že se Django nedokázal připojit k serveru PostgreSQL. Ujistěte se, že server PostgreSQL běží:
|
1 |
sudo systemctl status postgresql |
Pokud neběží, spusťte následující příkazy pro jeho spuštění a povolení:
|
1 2 |
sudo systemctl start postgresql sudo systemctl enable postgresql |
Pokud se tato chyba stále zobrazuje, ujistěte se, že jsou přihlašovací údaje k databázi správně definovány v settings.py:
|
1 |
~/viktor_project/viktor_project/settings.py |
Další řešení problémů
Pro další řešení problémů jsou k dispozici různé protokoly. Tyto protokoly mohou pomoci zúžit zdroje problémů.
Zde je seznam protokolů, které mohou pomoci:
- Protokoly Nginx
|
1 |
sudo journalctl -u nginx |
- Přístupové protokoly Nginx
|
1 |
sudo less /var/log/nginx/access.log |
- Chybové protokoly Nginx
|
1 |
sudo less /var/log/nginx/error.log |
- Aplikační protokoly Gunicorn
|
1 |
sudo journalctl -u gunicorn |
- Protokoly socketu Gunicorn
|
1 |
sudo journalctl -u gunicorn.socket |
|
1 |
sudo systemctl restart gunicorn |
|
1 2 |
sudo systemctl daemon-reload sudo systemctl restart gunicorn.socket gunicorn.service |
|
1 2 |
sudo nginx -t sudo systemctl restart nginx |
Závěrečné myšlenky
Tato příručka úspěšně ukazuje, jak položit základy Django. Django poskytuje mnoho běžných komponent webové aplikace, což vám umožňuje soustředit se na jedinečné prvky. Projekt Django bude fungovat ve virtuálním prostředí. Gunicorn spravuje komunikaci mezi požadavky klientů a Django. Nginx nakonec funguje jako reverzní proxy pro zpracování klientských připojení.
Příjemnou práci!










Komentáře
Zatím žádné komentáře. Buďte první.