GNU/Linux >> Znalost Linux >  >> Debian

Jak nainstalovat Django Framework na Debian 11

Django je bezplatný a open source webový vývojový rámec napsaný v Pythonu. Používá se pro vývoj složitých a databázově řízených aplikací Pythonu. Dodává se se sadou skriptů Python pro vytváření projektů Python. Lze jej spustit na jakémkoli operačním systému, na kterém lze spustit Python, včetně Windows, macOS, Linux/Unix a Solaris. Pomáhá vývojářům psát méně kódu a vytvářet nové webové stránky v krátkém čase.

V tomto tutoriálu vysvětlím, jak nastavit Django ve virtuálním prostředí Pythonu pomocí databáze PostgreSQL na Debianu 11. Poté nainstalujeme a nakonfigurujeme Nginx jako reverzní proxy pro Django.

Předpoklady

  • Server se systémem Debian 11.
  • Platný název domény s adresou IP vašeho serveru.
  • Na serveru je nakonfigurováno heslo uživatele root.

Začínáme

Než začnete, je dobré aktualizovat systémové balíčky na nejnovější verzi. Můžete to udělat pomocí následujícího příkazu:

apt-get update -y

Jakmile jsou všechny balíčky aktualizovány, nainstalujte další nástroje Pythonu a balíček Nginx pomocí následujícího příkazu:

apt-get install python3-pip python3-dev libpq-dev curl nginx -y

Jakmile jsou všechny požadované balíčky nainstalovány, můžete přejít k dalšímu kroku.

Instalovat databázový server PostgreSQL

Zde použijeme PostgreSQL jako databázový backend. Pojďme jej tedy nainstalovat pomocí následujícího příkazu:

apt-get install postgresql postgresql-contrib -y

Jakmile je PostgreSQL nainstalován, připojte se k prostředí PostgreSQL pomocí následujícího příkazu:

su - postgres
psql

Dále vytvořte databázi a uživatele pro Django pomocí následujícího příkazu:

CREATE DATABASE django;
CREATE USER django WITH PASSWORD 'password';

Dále udělte některé požadované role pomocí následujícího příkazu:

ALTER ROLE django SET client_encoding TO 'utf8';
ALTER ROLE django SET default_transaction_isolation TO 'read committed';
ALTER ROLE django SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE django TO django;

Dále ukončete prostředí PostgreSQL pomocí následujícího příkazu:

\q
exit

V tuto chvíli je databáze PostgreSQL připravena pro Django. Nyní můžete přejít k dalšímu kroku.

Vytvoření virtuálního prostředí Python

Dále budete muset vytvořit virtuální prostředí Pythonu, abyste mohli vytvořit projekt Django.

Nejprve upgradujte balíček PIP na nejnovější verzi pomocí následujícího příkazu:

pip3 install --upgrade pip

Dále ověřte verzi PIP pomocí následujícího příkazu:

pip --version

Ukázkový výstup:

pip 21.2.4 from /usr/local/lib/python3.9/dist-packages/pip (python 3.9)

Dále nainstalujte balíček virtuálního prostředí pomocí následujícího příkazu:

pip3 install virtualenv

Dále vytvořte adresář pro projekt Django a vytvořte virtuální prostředí Django:

mkdir ~/djangoapp
cd ~/djangoapp
virtualenv djangoenv

Dále aktivujte virtuální prostředí Django pomocí příkazu níže:

source djangoenv/bin/activate

Dále nainstalujte balíčky Django, Gunicorn a další pomocí následujícího příkazu:

pip install django gunicorn psycopg2-binary

V tomto okamžiku je Django nainstalován ve virtuálním prostředí Pythonu. Nyní můžete přejít k dalšímu kroku.

Instalovat a konfigurovat Django

Django poskytuje django-admin.py skript pro vytvoření projektu. Pro vytvoření projektu Django můžete spustit následující příkaz:

django-admin.py startproject djangoapp ~/djangoapp

Dále budete muset upravit soubor settings.py a definovat nastavení databáze:

nano ~/djangoapp/djangoapp/settings.py

Na následujícím řádku změňte název své domény:

ALLOWED_HOSTS = ['django.example.com', 'localhost']

Odkomentujte výchozí backend databáze a přidejte nastavení databáze PostgreSQL:

#DATABASES = {
#    'default': {
#        'ENGINE': 'django.db.backends.sqlite3',
#        'NAME': BASE_DIR / 'db.sqlite3',
#    }
#}

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django',
        'USER': 'django',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '',

    }
}

Na konec souboru přidejte následující řádky:

STATIC_URL = '/static/'
import os
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

Uložte a zavřete soubor a poté migrujte počáteční schéma databáze do databáze PostgreSQL:

./manage.py makemigrations
./manage.py migrate

Ukázkový výstupL:

  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK

Dále vytvořte superuživatelský účet pro Django pomocí následujícího příkazu:

./manage.py createsuperuser

Nastavte své uživatelské jméno a heslo správce, jak je uvedeno níže:

Username (leave blank to use 'root'): dadmin
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.

Dále shromážděte veškerý statický obsah do adresáře:

./manage.py collectstatic

Spusťte vývojový server Django

V tomto okamžiku je Django nainstalován a nakonfigurován. Nyní můžete spustit vývojový server Django pomocí následujícího příkazu:

./manage.py runserver 0.0.0.0:8000

Pokud je vše v pořádku, měli byste získat následující výstup:

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
August 27, 2021 - 10:02:05
Django version 3.2.6, using settings 'djangoapp.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

Nyní otevřete webový prohlížeč a otevřete svůj projekt Django pomocí adresy URL http://django.example.com:8000/admin/ . Budete přesměrováni na přihlašovací stránku Django:

Zadejte své administrátorské uživatelské jméno, heslo a klikněte na Přihlásit . Na následující stránce byste měli vidět řídicí panel Django:

Nyní se vraťte do svého terminálu a stiskněteCTRL + C zastavit vývojový server Django.

Ověřit Djanga pomocí Gunicorn

Dále budete také muset vyzkoušet, zda Gunicorn může sloužit Django nebo ne. Django můžete spustit pomocí serveru Gunicorn pomocí následujícího příkazu:

gunicorn --bind 0.0.0.0:8000 djangoapp.wsgi

Pokud je vše v pořádku, měli byste získat následující výstup:

[2021-08-27 10:04:22 +0000] [47383] [INFO] Starting gunicorn 20.1.0
[2021-08-27 10:04:22 +0000] [47383] [INFO] Listening at: http://0.0.0.0:8000 (47383)
[2021-08-27 10:04:22 +0000] [47383] [INFO] Using worker: sync
[2021-08-27 10:04:22 +0000] [47384] [INFO] Booting worker with pid: 47384

Stiskněte CTRL + C pro zastavení serveru Gunicorn.

Dále deaktivujte z virtuálního prostředí Pythonu pomocí následujícího příkazu:

deactivate

Vytvoření souboru Systemd Service pro Gunicorn

Dále budete muset vytvořit servisní soubor systemd pro Gunicorn ke spuštění a zastavení aplikačního serveru Django.

Gunicorna můžete vytvořit pomocí následujícího příkazu:

nano /etc/systemd/system/gunicorn.socket

Přidejte následující řádky:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

Uložte a zavřete soubor a poté vytvořte soubor služby pro Gunicorn:

nano /etc/systemd/system/gunicorn.service

Přidejte následující řádky, které odpovídají vaší cestě projektu Django:

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/root/djangoapp
ExecStart=/root/djangoapp/djangoenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock          djangoapp.wsgi:application

[Install]
WantedBy=multi-user.target

Uložte a zavřete soubor a poté nastavte správná oprávnění k adresáři projektu Django:

chown -R www-data:root ~/djangoapp

Dále znovu načtěte démona systemd pomocí následujícího příkazu:

systemctl daemon-reload

Dále spusťte službu Gunicorn a povolte její spuštění při restartu systému:

systemctl start gunicorn.socket
systemctl enable gunicorn.socket

Dále zkontrolujte stav Gunicornu pomocí příkazu níže:

systemctl status gunicorn.socket

Měli byste získat následující výstup:

? gunicorn.socket - gunicorn socket
     Loaded: loaded (/etc/systemd/system/gunicorn.socket; disabled; vendor preset: enabled)
     Active: active (listening) since Fri 2021-08-27 10:05:46 UTC; 6s ago
   Triggers: ? gunicorn.service
     Listen: /run/gunicorn.sock (Stream)
     CGroup: /system.slice/gunicorn.socket

Aug 27 10:05:46 debian11 systemd[1]: Listening on gunicorn socket.

Nakonfigurujte Nginx jako reverzní proxy pro Django

Dále budete muset nakonfigurovat Nginx jako reverzní proxy pro obsluhu Django.

Chcete-li tak učinit, vytvořte konfigurační soubor Nginx:

nano /etc/nginx/conf.d/django.conf

Přidejte následující řádky:

server {
     listen 80;
     server_name django.example.com;
    location = /favicon.ico { access_log off; log_not_found off; }


    location /static/ {
         root /root/djangoapp;
     }

    location / {
         include proxy_params;
         proxy_pass http://unix:/run/gunicorn.sock;
     }
}

Uložte a zavřete soubor a poté ověřte, zda Nginx neobsahuje nějakou chybu konfigurace:

nginx -t
Output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nakonec restartujte službu Nginx, aby se změny projevily:

systemctl restart nginx

Chcete-li zkontrolovat stav Nginx, spusťte:

systemctl status nginx

Ukázkový výstup:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-08-27 10:06:59 UTC; 6s ago
       Docs: man:nginx(8)
    Process: 47494 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 47495 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 47496 (nginx)
      Tasks: 2 (limit: 2341)
     Memory: 2.5M
        CPU: 49ms
     CGroup: /system.slice/nginx.service
             ??47496 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??47497 nginx: worker process

Aug 27 10:06:59 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Aug 27 10:06:59 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Aug 27 10:06:59 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

Nyní můžete přistupovat k aplikaci Django pomocí adresy URL http://django.example.com/admin . K aplikaci Django můžete také přistupovat pomocí adresy URL http://django.example.com/ .

Závěr

Gratulujeme! úspěšně jste nainstalovali aplikaci Django s Gunicorn a Nginx jako reverzní proxy. Nyní můžete začít nasazovat svou aplikaci Python pomocí rámce Django.


Debian
  1. Jak nainstalovat Django Web Application Framework na Debian 10

  2. Jak nainstalovat osquery na Debian 10

  3. Jak nainstalovat WildFly na Debian 11

  1. Jak nainstalovat Ionic Framework na Debian 10

  2. Jak nainstalovat PHP 8 na Debian 11

  3. Jak nainstalovat GitLab na Debian 11

  1. Jak nainstalovat Symfony 5 Framework s Nginx na Debian 10

  2. Jak nainstalovat Jenkins na Debian 11

  3. Jak nainstalovat Cockpit na Debian 11