Django je open-source webový framework napsaný v Pythonu. Je to populární webový rámec typu vše v jednom a jedna z nejlepších možností pro mnoho vývojářů. Django nabízí mnoho výhod, jako je architektura MVT (Model View Template), automatický admin panel a výkonná podpora databáze ORM (Object Relational Mapping). Nabízí také úžasné nástroje pro ladění pro vývojáře. V tomto tutoriálu vám ukážeme, jak nainstalovat Django s PostgreSQL jako úložiště databáze namísto výchozího SQLite, Nginx jako reverzní proxy a Gunicorn jako aplikační server na Ubuntu 20.04.
Předpoklady
- Ubuntu 20.04 VPS
- Přístup SSH s právy root
Krok 1. Přihlaste se k serveru
Nejprve se přihlaste ke svému serveru Ubuntu 20.04 prostřednictvím SSH jako uživatel root:
ssh root@IP_Address -p Port_number
„IP_Address“ a „Port_number“ budete muset nahradit příslušnou IP adresou vašeho serveru a číslem portu SSH. V případě potřeby navíc nahraďte „root“ uživatelským jménem účtu správce.
Před spuštěním se musíte ujistit, že všechny balíčky Ubuntu OS nainstalované na serveru jsou aktuální. Můžete to provést spuštěním následujících příkazů:
# apt update -y # apt upgrade -y
Krok 2. Vytvoření systémového uživatele
Po přihlášení do Ubuntu 20.04 jako root vytvoříme nového uživatele systému a udělíme mu práva sudo. Tohoto uživatele také použijeme k dokončení této instalace. V tomto tutoriálu vytvoříme nového uživatele systému s názvem ‚master‘, můžete si vybrat libovolné uživatelské jméno, které se vám líbí.
# adduser master
Po vytvoření spusťte tento příkaz pro přidání nového uživatele do skupiny sudo. V Ubuntu mohou uživatelé, kteří jsou členy skupiny sudo, spouštět příkazy sudo.
# usermod -aG sudo master
Přidáme také master uživatele do naší skupiny www-data
# usermod -aG www-data master
Nyní se můžeme přihlásit jako nový uživatel „master“
# su - master
Krok 3. Instalace balíčků
Abychom to mohli začít, nainstalujeme všechny požadované balíčky z úložiště. Chcete-li nainstalovat Nginx, PostgreSQL, Python z úložiště, můžeme spustit tento příkaz:
$ sudo apt install postgresql postgresql-contrib python3-pip python3-dev libpq-dev nginx -y
Krok 4. Přidat databázi a uživatele databáze
Během instalace PostgreSQL byl vytvořen systémový uživatel s názvem postgres jako výchozí administrativní uživatel. Potřebujeme tohoto uživatele použít k přihlášení do prostředí PostgreSQL a provádění administrativních úkolů.
$ sudo -u postgres psql
Budete požádáni o vaše „hlavní“ heslo a shell bude vypadat takto:
postgres=#
V prostředí postgreSQL spusťte následující příkazy:
postgres=# CREATE USER djangouser WITH PASSWORD 'm0d1fyth15';
postgres=# CREATE DATABASE djangodb;
Dále také musíme změnit kódování na UTF-8, časové pásmo a schéma databáze default_transaction_isolation.
postgres=# ALTER ROLE djangouser SET client_encoding TO 'utf8';
postgres=# ALTER ROLE djangouser SET default_transaction_isolation TO 'read committed';
postgres=# ALTER ROLE djangouser SET timezone TO 'UTC';
V poslední části udělujeme oprávnění nové databázi a poté ukončíme prostředí PostgreSQL.
postgres=# GRANT ALL PRIVILEGES ON DATABASE djangodb TO djangouser;
postgres=# \q
Krok 5. Vytvořte virtuální prostředí Pythonu
Django lze nainstalovat několika způsoby, v tomto článku vám ukážeme, jak jej nainstalovat ve virtuálním prostředí pythonu.
$ sudo -H pip3 install --upgrade pip
$ sudo -H pip3 install virtualenv
Po dokončení vytvořte nový adresář pro instalaci django a poté přejděte do nového adresáře
$ mkdir django && cd $_
Po vstupu do adresáře ‚django‘ můžeme spustit tento příkaz a vytvořit nové virtuální prostředí.
$ virtualenv djangoenv
Jak je vidět na obrázku, nové virtuální prostředí je vytvořeno v adresáři ‚djangoenv‘. Chcete-li nainstalovat Django, Gunicorn a Psycopg2 do virtuálního prostředí, musíme je nejprve aktivovat.
$ source djangoenv/bin/activate
Spuštěním výše uvedeného příkazu bude váš shell vypadat takto:
(djangoenv) master@ubuntu20:~/django$
V prostředí shell spusťte tento příkaz a nainstalujte django.
(djangoenv) master@ubuntu20:~/django$ pip install django gunicorn psycopg2
Po dokončení byste měli vidět výstup podobný tomuto:
Installing collected packages: sqlparse, backports.zoneinfo, asgiref, psycopg2, gunicorn, django
Successfully installed asgiref-3.4.1 backports.zoneinfo-0.2.1 django-4.0 gunicorn-20.1.0 psycopg2-2.9.2 sqlparse-0.4.2
Všechny požadované komponenty ke spuštění projektu django by měly být nainstalovány ve virtuálním prostředí.
Krok 6. Vytvořte projekt Django
V předchozím kroku jsme vytvořili adresář ~/django
nebo v tomto případě /home/master/django
. V tomto adresáři vytvoříme projekt django, můžeme spustit tento příkaz a nainstalovat projekt django v ~/django
. Příkaz by měl být spuštěn, když jsme ve virtuálním prostředí.
(djangoenv) master@ubuntu20:~/django$ django-admin startproject djangoproject ~/django
Výše uvedený příkaz nainstaluje projekt django do ~/django/djangoproject
. Pokud vypíšete adresář, uvidíte manage.py
, djangoenv
a djangoproject
ve vašem ~/django
.
Nyní, protože chceme používat PostgreSQL jako úložiště databáze, musíme upravit konfiguraci.
$ nano ~/django/djangoproject/settings.py
Přidejte tento řádek do horní části souboru settings.py
import os
A nahradit existující databázové informace následujícími.
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'djangodb', 'USER': 'djangouser', 'PASSWORD': 'm0d1fyth15', 'HOST': 'localhost', 'PORT': '', } }
Ujistěte se, že uživatelské jméno a heslo databáze odpovídají tomu, které jsme vytvořili v předchozím kroku. Stále ve stejném souboru settings.py najděte ALLOWED_HOSTS a poté můžete přidat IP adresu serveru, názvy domén, názvy subdomén. Záznamy by měly být odděleny čárkou a uvedeny v uvozovkách.
ALLOWED_HOSTS = ['123.123.123.123', 'domain.com', 'sub.domain.com']
Dále najděte konfiguraci statických souborů Django. Změny jsou nutné k tomu, aby byly vaše statické soubory Django přístupné prostřednictvím nginx a aby se zabránilo nginx vracet chybové zprávy 404. Přidejte tento řádek za STATIC_URL =„/static/“
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
Nezapomeňte uložit změny a poté odejít.
Dále je čas migrovat počáteční schéma databáze do naší databáze PostgreSQL, spusťte tyto příkazy.
(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py makemigrations
(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py migrate
Poté vytvořte superuživatele.
(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py createsuperuser
Budete požádáni o vytvoření uživatelského jména, zadání e-mailové adresy a hesla uživatelského jména. Informace o tomto administrátorském uživateli a hesle byste si chtěli uložit, protože je budete používat k přihlášení do backendu Django.
Pro poslední spusťte níže uvedený příkaz a shromážděte statické soubory.
(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py collectstatic
Budete muset potvrdit akci tím, že na ni odpovíte ano, poté uvidíte tento výstup po potvrzení:
128 static files copied to '/home/master/django/static'
Ukončete deaktivací virtuálního prostředí.
(djangoenv) master@ubuntu20:~/django$ deactivate
Krok 7. Vytvořte soubor Gunicorn Systemd
Pro správu služby Gunicorn vytvoříme soubor systemd unit na /etc/systemd/system/gunicorn.service.
$ sudo nano /etc/systemd/system/gunicorn.service
Vložte tyto řádky
[Unit] Description=gunicorn daemon After=network.target [Service] User=master Group=www-data WorkingDirectory=/home/master/django ExecStart=/home/master/django/djangoenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/master/django/djangoproject.sock djangoproject.wsgi:application [Install] WantedBy=multi-user.target
Uložte soubor a poté ukončete. Poté znovu načtěte systemd a spusťte gunicorn.
$ sudo systemctl daemon-reload
$ sudo systemctl start gunicorn
Chcete-li zkontrolovat, zda gunicorn běží nebo ne, spusťte tento příkaz:
$ sudo systemctl status gunicorn
Krok 8. Nakonfigurujte Nginx
Gunicorn běží a nyní jsme připraveni nakonfigurovat nginx, aby fungoval jako reverzní proxy pro náš projekt Django. Vytvořme blok serveru nginx pro Django a smažte blok výchozího serveru nginx.
$ sudo rm /etc/nginx/sites-enabled/default $ sudo nano /etc/nginx/conf.d/django.conf
Vložte tyto řádky do /etc/nginx/conf.d/django.conf
server { listen 80; server_name 123.123.123.123; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { alias /home/master/django/static/; } location /.well-known { alias /home/master/django/; } location / { include proxy_params; proxy_pass http://unix:/home/master/django/djangoproject.sock; } }
Před uložením souborů se ujistěte, že jste nahradili 123.123.123.123
se skutečnou IP adresou vašeho serveru a správnou cestou soketu. Poté zkontrolujte případnou chybu a restartujte nginx, aby se znovu načetla nová konfigurace.
$ sudo nginx -t $ sudo systemctl restart nginx
V tuto chvíli byste měli mít přístup ke svému projektu Django na http://YOUR_SERVER_IP_ADDRESS
a adresu URL pro správu na adrese http://YOUR_SERVER_IP_ADDRESS/admin
pomocí vašeho oblíbeného webového prohlížeče.
Krok 9. Instalace certifikátu SSL
Tento krok je volitelný, ale důrazně doporučujeme jej dokončit. V moderní době by weby měly běžet v HTTPS namísto HTTP. Tento krok vás provede instalací SSL z Let’s Encrypt.
$ sudo apt install certbot python3-certbot-nginx -y
Po instalaci upravte blok svého webového serveru Django a nahraďte server_name vaší skutečnou doménou nebo subdoménou směřující na IP adresu vašeho serveru. Před vydáním certifikátu SSL se ujistěte, že DNS záznam domény nebo subdomény již směřuje na váš server.
Otevřete /etc/nginx/conf.d/django.conf
a upravit tuto část
server { listen 80; server_name 123.123.123.123;
do
server { listen 80; server_name yourdomain.com;
Nezapomeňte nahradit yourdomain.com
s vaším skutečným názvem domény. Uložte soubor, ukončete a znovu načtěte Nginx.
$ sudo systemctl reload nginx
Nyní jsme připraveni nainstalovat certifikát SSL, spusťte tento příkaz:
$ sudo certbot
Budete muset zadat svou e-mailovou adresu, přijmout TOS Let’s Encrypt a zda chcete svou e-mailovou adresu sdílet s Electronic Frontier Foundation nebo ne. Poté si musíte vybrat, pro která jména chcete HTTPS aktivovat. Vyberte svůj web Django zadáním čísla a stisknutím klávesy ENTER. Let’s encrypt nainstaluje certifikát a zeptá se vás, zda chcete nakonfigurovat přesměrování HTTP na HTTPS nebo ne, můžete zvolit přesměrování, poté certbot vytvoří přesměrování a znovu načte Nginx, pokud je vše v pořádku.
Nyní byste měli mít přístup ke svému webu Django v režimu HTTPS na adrese https://yourdomain.com
.
To je vše, naučili jste se, jak nastavit Django pomocí PostgreSQL, Nginx a Gunicorn.
Samozřejmě nemusíte nastavovat Django s PostgreSQL, Nginx a Gunicorn na Ubuntu 20.04, pokud používáte jednu z našich hostingových služeb Django VPS, v takovém případě můžete jednoduše požádat naše zkušené administrátory Linuxu, aby nastavili Django s PostgreSQL. , Nginx a Gunicorn na Ubuntu 20.04 VPS pro vás. Jsou k dispozici 24×7 a okamžitě se postarají o váš požadavek.
PS. Pokud se vám líbil tento příspěvek o tom, jak nastavit Django s PostgreSQL, Nginx a Gunicorn na Ubuntu 20.04, sdílejte jej se svými přáteli na sociálních sítích pomocí tlačítek níže nebo jednoduše zanechte odpověď v sekcích komentářů. Děkuji.