GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So installieren Sie das Django-Framework unter Debian 11

Django ist ein kostenloses Open-Source-Webentwicklungs-Framework, das in Python geschrieben wurde. Es wird für die Entwicklung komplexer und datenbankgesteuerter Python-Anwendungen verwendet. Es enthält eine Reihe von Python-Skripten zum Erstellen von Python-Projekten. Es kann auf jedem Betriebssystem ausgeführt werden, das Python ausführen kann, einschließlich Windows, macOS, Linux/Unix und Solaris. Es hilft Entwicklern, weniger Code zu schreiben und in kurzer Zeit eine neue Website zu erstellen.

In diesem Tutorial werde ich erklären, wie man Django in einer virtuellen Python-Umgebung mit der PostgreSQL-Datenbank auf Debian 11 einrichtet. Anschließend werden wir Nginx als Reverse-Proxy für Django installieren und konfigurieren.

Voraussetzungen

  • Ein Server mit Debian 11.
  • Ein gültiger Domainname, auf den Ihre Server-IP verweist.
  • Auf dem Server ist ein Root-Passwort konfiguriert.

Erste Schritte

Bevor Sie beginnen, ist es eine gute Idee, Ihre Systempakete auf die neueste Version zu aktualisieren. Sie können dies mit dem folgenden Befehl tun:

apt-get update -y

Sobald alle Pakete aktualisiert sind, installieren Sie andere Python-Tools und das Nginx-Paket mit dem folgenden Befehl:

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

Sobald alle erforderlichen Pakete installiert sind, können Sie mit dem nächsten Schritt fortfahren.

PostgreSQL-Datenbankserver installieren

Hier verwenden wir PostgreSQL als Datenbank-Backend. Lassen Sie uns es also mit dem folgenden Befehl installieren:

apt-get install postgresql postgresql-contrib -y

Sobald PostgreSQL installiert ist, verbinden Sie sich mit dem folgenden Befehl mit der PostgreSQL-Shell:

su - postgres
psql

Erstellen Sie als Nächstes eine Datenbank und einen Benutzer für Django mit dem folgenden Befehl:

DATENBANK django ERSTELLEN;
BENUTZER django MIT PASSWORT ERSTELLEN 'password';

Weisen Sie als Nächstes einige erforderliche Rollen mit dem folgenden Befehl zu:

ALTER ROLE django SET client_encoding TO 'utf8';
ALTER ROLE django SET default_transaction_isolation TO 'read commited';
ALTER ROLE django SET timezone TO 'UTC';
ALLE PRIVILEGIEN EINGEBEN DATENBANK django TO django;

Verlassen Sie als Nächstes die PostgreSQL-Shell mit dem folgenden Befehl:

\q
beenden

An diesem Punkt ist die PostgreSQL-Datenbank bereit für Django. Sie können jetzt mit dem nächsten Schritt fortfahren.

Erstellen Sie eine virtuelle Python-Umgebung

Als Nächstes müssen Sie eine virtuelle Python-Umgebung erstellen, um ein Django-Projekt zu erstellen.

Aktualisieren Sie zunächst das PIP-Paket mit dem folgenden Befehl auf die neueste Version:

pip3 install --upgrade pip

Als nächstes überprüfen Sie die PIP-Version mit dem folgenden Befehl:

pip --version

Beispielausgabe:

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

Installieren Sie als Nächstes das Paket für die virtuelle Umgebung mit dem folgenden Befehl:

pip3 install virtualenv

Erstellen Sie als Nächstes ein Verzeichnis für das Django-Projekt und erstellen Sie eine virtuelle Django-Umgebung:

mkdir ~/djangoapp
cd ~/djangoapp
virtualenv djangoenv

Als nächstes aktivieren Sie die virtuelle Django-Umgebung mit dem folgenden Befehl:

source djangoenv/bin/activate

Installieren Sie als Nächstes Django, Gunicorn und andere Pakete mit dem folgenden Befehl:

pip installiere django gunicorn psycopg2-binary

An diesem Punkt ist Django in der virtuellen Python-Umgebung installiert. Jetzt können Sie mit dem nächsten Schritt fortfahren.

Django installieren und konfigurieren

Django stellt eine django-admin.py bereit Skript zum Erstellen eines Projekts. Sie können den folgenden Befehl ausführen, um ein Django-Projekt zu erstellen:

django-admin.py startproject djangoapp ~/djangoapp

Als nächstes müssen Sie die settings.py bearbeiten und Ihre Datenbankeinstellungen definieren:

nano ~/djangoapp/djangoapp/settings.py

Ändern Sie die folgende Zeile mit Ihrem Domänennamen:

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

Kommentieren Sie das standardmäßige Datenbank-Backend aus und fügen Sie die PostgreSQL-Datenbankeinstellungen hinzu:

#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', ' ANSCHLUSS':'', }}

Fügen Sie am Ende der Datei die folgenden Zeilen hinzu:

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

Speichern und schließen Sie die Datei und migrieren Sie dann das anfängliche Datenbankschema in die PostgreSQL-Datenbank:

./manage.py makemigrations
./manage.py migrieren

BeispielausgabeL:

 Apply all migrations:admin, auth, contenttypes, sessionsRunning 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 Anwenden contenttypes.0002_remove_content_type_name ... OK Anwenden auth.0002_alter_permission_name_max_length ... OK Anwenden auth.0003_alter_user_email_max_length ... OK auth.0004_alter_user_username_opts Anwenden ... OK Anwenden auth.0005_alter_user_last_login_null ... OK Anwenden auth.0006_require_contenttypes_0002 ... OK Apply auth.0007_alter_validators_add_error_messages... OK Apply auth.0008_alter_user_username_max_length... OK Apply auth.0009_alter_user_last_name_max_length... OK Apply auth.0010_alter_group_name_max_length... OK Apply auth.0011_update_proxy_permissions... OK Apply auth.001 OK Sitzungen anwenden.0001_ initial... OK

Erstellen Sie als Nächstes mit dem folgenden Befehl ein Superuser-Konto für Django:

./manage.py erstellt einen Superuser

Legen Sie Ihren Admin-Benutzernamen und Ihr Passwort wie unten gezeigt fest:

Benutzername (leer lassen, um „root“ zu verwenden):dadminE-Mail-Adresse:[email protected]Passwort:Passwort (erneut):Superuser erfolgreich erstellt.

Sammeln Sie als Nächstes den gesamten statischen Inhalt im Verzeichnis:

./manage.py collectstatic

Führen Sie den Django-Entwicklungsserver aus

An diesem Punkt ist Django installiert und konfiguriert. Sie können jetzt den Django-Entwicklungsserver mit dem folgenden Befehl starten:

./manage.py Runserver 0.0.0.0:8000

Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:

Auf Dateiänderungen mit StatReloader achten Systemprüfungen durchführen... Systemprüfung ergab keine Probleme (0 stummgeschaltet). http://0.0.0.0:8000/Beenden Sie den Server mit CONTROL-C.

Öffnen Sie nun Ihren Webbrowser und greifen Sie über die URL http://django.example.com:8000/admin/ auf Ihr Django-Projekt zu . Sie werden zur Anmeldeseite von Django weitergeleitet:

Geben Sie Ihren Admin-Benutzernamen und Ihr Passwort ein und klicken Sie auf Anmelden . Sie sollten das Django-Dashboard auf der folgenden Seite sehen:

Gehen Sie jetzt zurück zu Ihrem Terminal und drücken Sie STRG + C um den Django-Entwicklungsserver zu stoppen.

Django mit Gunicorn verifizieren

Als nächstes müssen Sie auch testen, ob das Gunicorn den Django bedienen kann oder nicht. Sie können Django über den Gunicorn-Server mit dem folgenden Befehl starten:

gunicorn --bind 0.0.0.0:8000 djangoapp.wsgi

Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:

[2021-08-27 10:04:22 +0000] [47383] [INFO] Ab gunicorn 20.1.0[2021-08-27 10:04:22 +0000] [47383] [INFO] Zuhören bei :http://0.0.0.0:8000 (47383)[2021-08-27 10:04:22 +0000] [47383] [INFO] Nutzt Worker:sync[2021-08-27 10:04:22 +0000 ] [47384] [INFO] Boot-Worker mit PID:47384

Drücken Sie STRG + C, um den Gunicorn-Server zu stoppen.

Deaktivieren Sie als Nächstes die virtuelle Python-Umgebung mit dem folgenden Befehl:

deaktivieren

Erstellen Sie eine Systemd-Dienstdatei für Gunicorn

Als Nächstes müssen Sie eine systemd-Dienstdatei für Gunicorn erstellen, um den Django-Anwendungsserver zu starten und zu stoppen.

Sie können ein Gunicorn mit dem folgenden Befehl erstellen:

nano /etc/systemd/system/gunicorn.socket

Fügen Sie die folgenden Zeilen hinzu:

[Unit]Description=gunicorn socket[Socket]ListenStream=/run/gunicorn.sock[Install]WantedBy=sockets.target

Speichern und schließen Sie die Datei und erstellen Sie dann eine Dienstdatei für Gunicorn:

nano /etc/systemd/system/gunicorn.service

Fügen Sie die folgenden Zeilen hinzu, die Ihrem Django-Projektpfad entsprechen:

[Unit]Description=gunicorn daemonRequires=gunicorn.socketAfter=network.target[Service]User=rootGroup=www-dataWorkingDirectory=/root/djangoappExecStart=/root/djangoapp/djangoenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock djangoapp.wsgi:application[Install]WantedBy=multi-user.target

Speichern und schließen Sie die Datei und legen Sie dann die richtige Berechtigung für das Django-Projektverzeichnis fest:

chown -R www-data:root ~/djangoapp

Als nächstes laden Sie den systemd-Daemon mit dem folgenden Befehl neu:

systemctl daemon-reload

Starten Sie als Nächstes den Gunicorn-Dienst und aktivieren Sie ihn so, dass er beim Systemneustart gestartet wird:

systemctl start gunicorn.socket
systemctl enable gunicorn.socket

Überprüfen Sie als Nächstes den Status des Gunicorn mit dem folgenden Befehl:

Systemctl-Status gunicorn.socket

Sie sollten die folgende Ausgabe erhalten:

? gunicorn.socket - gunicorn socket Geladen:geladen (/etc/systemd/system/gunicorn.socket; deaktiviert; Herstellervoreinstellung:aktiviert) Aktiv:aktiv (lauschend) seit 27.08.2021 10:05:46 UTC; vor 6s Auslöser:? gunicorn.service Listen:/run/gunicorn.sock (Stream) CGroup:/system.slice/gunicorn.socketAug 27 10:05:46 debian11 systemd[1]:Listening on gunicorn socket.

Konfigurieren Sie Nginx als Reverse-Proxy für Django

Als Nächstes müssen Sie Nginx als Reverse-Proxy konfigurieren, um Django zu bedienen.

Erstellen Sie dazu eine Nginx-Konfigurationsdatei:

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

Fügen Sie die folgenden Zeilen hinzu:

server {listen 80; Servername django.example.com; location =/favicon.ico { access_log off; log_not_found aus; } location /static/ { root /root/djangoapp; } Ort / { Proxy_params einschließen; Proxy_pass http://unix:/run/gunicorn.sock; }}

Speichern und schließen Sie die Datei und überprüfen Sie dann Nginx auf Konfigurationsfehler:

nginx -t
Ausgabe:
nginx:Die Syntax der Konfigurationsdatei /etc/nginx/nginx.conf ist oknginx:Der Test der Konfigurationsdatei /etc/nginx/nginx.conf ist erfolgreich

Starten Sie abschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl startet nginx neu

Um den Status von Nginx zu überprüfen, führen Sie Folgendes aus:

systemctl status nginx

Beispielausgabe:

? nginx.service – Ein Hochleistungs-Webserver und ein Reverse-Proxy-Server Geladen:geladen (/lib/systemd/system/nginx.service; aktiviert; Herstellervoreinstellung:aktiviert) Aktiv:aktiv (läuft) seit Fr :06:59 UTC; vor 6s Dokumente:man:nginx(8) Prozess:47494 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process an; (code=beendet, status=0/SUCCESS) Prozess:47495 ExecStart=/usr/sbin/nginx -g daemon on; master_process an; (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 an; master_process an; ??47497 nginx:worker processAug 27 10:06:59 debian11 systemd[1]:Starten eines Hochleistungs-Webservers und eines Reverse-Proxy-Servers ... 27. Aug 10:06:59 debian11 systemd[1]:nginx.service:Fehler beim Analysieren der PID aus der Datei /run/nginx.pid:Ungültiges Argument 27. August 10:06:59 debian11 systemd[1]:Ein Hochleistungs-Webserver und ein Reverse-Proxy-Server gestartet.

Jetzt können Sie über die URL http://django.example.com/admin auf die Django-Anwendung zugreifen . Sie können auch über die URL http://django.example.com/ auf die Django-Anwendung zugreifen .

Schlussfolgerung

Herzliche Glückwünsche! Sie haben erfolgreich eine Django-Anwendung mit Gunicorn und Nginx als Reverse-Proxy installiert. Sie können jetzt mit der Bereitstellung Ihrer Python-Anwendung mithilfe des Django-Frameworks beginnen.


Debian
  1. So installieren Sie das Django Web Application Framework unter Debian 10

  2. So installieren Sie osquery unter Debian 10

  3. So installieren Sie Ionic Framework unter Debian 10

  4. So installieren Sie PHP 8 auf Debian 11

  5. So installieren Sie WildFly unter Debian 11

So installieren Sie Django unter Debian 10

So installieren Sie Ionic Framework unter Debian 10

So installieren Sie Django unter Debian 11

So installieren Sie das Play-Framework unter Debian 11

So installieren Sie LEMP in Debian 7

So installieren Sie das CodeIgniter-PHP-Framework unter Debian 10