GNU/Linux >> Znalost Linux >  >> Panels >> Panels

Jak nastavit Django s Postgres, Nginx a Gunicorn na Ubuntu 20.04

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.


Panels
  1. Nainstalujte Django CMS na Ubuntu 12.04 s MariaDB, Gunicorn a Nginx

  2. Nainstalujte a nastavte NodeBB s Redis a Nginx na Ubuntu 12.04

  3. Jak nasadit aplikaci Flask s Nginx a Gunicorn na Ubuntu 20.04

  1. Jak nainstalovat phpMyAdmin s HHVM, Nginx a MariaDB na Ubuntu 14.04 VPS

  2. Jak nastavit jednoduchou aplikaci nodejs s nginx a pm2 na serveru ubuntu

  3. Jak nainstalovat Node.js s NVM a Nginx na Ubuntu 22.04

  1. Jak vytvořit a odstranit uživatele na Ubuntu 16.04

  2. Jak nainstalovat PHP 7.4 s Nginx na Ubuntu 20.04

  3. Jak nainstalovat a nastavit MERN Stack s Nginx na Ubuntu 20.04