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:
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:
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.