Django Installation · 7 min read · Dec 22, 2025
So installieren Sie das Django-Framework auf Debian 11

Django ist ein kostenloses und Open-Source-Webentwicklungs-Framework, das in Python geschrieben ist. Es wird verwendet, um komplexe und datenbankgestützte Python-Anwendungen zu entwickeln. Es kommt mit einer Reihe von Python-Skripten zur Erstellung 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 Python-virtuellen Umgebung mit der PostgreSQL-Datenbank auf Debian 11 einrichtet. Wir werden dann Nginx als Reverse-Proxy für Django installieren und konfigurieren.
Voraussetzungen
- Ein Server, der Debian 11 ausführt.
- Ein gültiger Domainname, der auf Ihre Server-IP zeigt.
- Ein Root-Passwort ist auf dem Server 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 -ySobald 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 -ySobald alle erforderlichen Pakete installiert sind, können Sie mit dem nächsten Schritt fortfahren.
Installieren Sie den PostgreSQL-Datenbankserver
Hier werden wir PostgreSQL als Datenbank-Backend verwenden. Lassen Sie uns es mit dem folgenden Befehl installieren:
apt-get install postgresql postgresql-contrib -ySobald PostgreSQL installiert ist, verbinden Sie sich mit der PostgreSQL-Shell mit dem folgenden Befehl:
su - postgres
psqlErstellen Sie als Nächstes eine Datenbank und einen Benutzer für Django mit dem folgenden Befehl:
CREATE DATABASE django;
CREATE USER django WITH PASSWORD 'password';Gewähren Sie als Nächstes einige erforderliche Rollen mit dem folgenden Befehl:
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;Verlassen Sie als Nächstes die PostgreSQL-Shell mit dem folgenden Befehl:
\q
exitAn diesem Punkt ist die PostgreSQL-Datenbank bereit für Django. Sie können jetzt mit dem nächsten Schritt fortfahren.
Erstellen Sie eine Python-virtuelle Umgebung
Als Nächstes müssen Sie eine Python-virtuelle Umgebung erstellen, um ein Django-Projekt zu erstellen.
Zuerst aktualisieren Sie das PIP-Paket auf die neueste Version mit dem folgenden Befehl:
pip3 install --upgrade pipÜberprüfen Sie als Nächstes die PIP-Version mit dem folgenden Befehl:
pip --versionBeispielausgabe:
pip 21.2.4 from /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 virtualenvErstellen Sie als Nächstes ein Verzeichnis für das Django-Projekt und erstellen Sie eine Django-virtuelle Umgebung:
mkdir ~/djangoapp
cd ~/djangoapp
virtualenv djangoenvAktivieren Sie als Nächstes die Django-virtuelle Umgebung mit dem folgenden Befehl:
source djangoenv/bin/activateInstallieren Sie als Nächstes Django, Gunicorn und andere Pakete mit dem folgenden Befehl:
pip install django gunicorn psycopg2-binaryAn diesem Punkt ist Django in der Python-virtuellen Umgebung installiert. Jetzt können Sie mit dem nächsten Schritt fortfahren.
Installieren und Konfigurieren von Django
Django bietet ein django-admin.py-Skript zur Erstellung eines Projekts. Sie können den folgenden Befehl ausführen, um ein Django-Projekt zu erstellen:
django-admin.py startproject djangoapp ~/djangoappAls 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 Domainnamen:
ALLOWED_HOSTS = ['django.example.com', 'localhost']Kommentieren Sie das Standard-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',
'PORT': '',
}
}Fügen Sie die folgenden Zeilen am Ende der Datei hinzu:
STATIC_URL = '/static/'
import os
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')Speichern und schließen Sie die Datei, und migrieren Sie dann das anfängliche Datenbankschema zur PostgreSQL-Datenbank:
./manage.py makemigrations
./manage.py migrateBeispielausgabe:
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... OKErstellen Sie als Nächstes ein Superbenutzerkonto für Django mit dem folgenden Befehl:
./manage.py createsuperuserSetzen Sie Ihren Admin-Benutzernamen und Ihr Passwort wie unten gezeigt:
Username (leave blank to use 'root'): dadmin
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.Sammeln Sie als Nächstes alle statischen Inhalte in das Verzeichnis:
./manage.py collectstaticFü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:8000Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:
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.Öffnen Sie jetzt Ihren Webbrowser und greifen Sie auf Ihr Django-Projekt über die URL http://django.example.com:8000/admin/ zu. Sie werden zur Django-Anmeldeseite weitergeleitet:

Geben Sie Ihren Admin-Benutzernamen, 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 CTRL + C, um den Django-Entwicklungsserver zu stoppen.
Überprüfen Sie Django mit Gunicorn
Als Nächstes müssen Sie auch testen, ob Gunicorn Django bedienen kann oder nicht. Sie können Django mit dem Gunicorn-Server mit dem folgenden Befehl starten:
gunicorn --bind 0.0.0.0:8000 djangoapp.wsgiWenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:
[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: 47384Drücken Sie CTRL + C, um den Gunicorn-Server zu stoppen.
Deaktivieren Sie als Nächstes die Python-virtuelle Umgebung mit dem folgenden Befehl:
deactivateErstellen 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 Gunicorn mit dem folgenden Befehl erstellen:
nano /etc/systemd/system/gunicorn.socketFügen Sie die folgenden Zeilen hinzu:
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.targetSpeichern und schließen Sie die Datei, und erstellen Sie dann eine Dienstdatei für Gunicorn:
nano /etc/systemd/system/gunicorn.serviceFügen Sie die folgenden Zeilen hinzu, die Ihrem Django-Projektpfad entsprechen:
[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.targetSpeichern und schließen Sie die Datei, und setzen Sie dann die richtigen Berechtigungen für das Django-Projektverzeichnis:
chown -R www-data:root ~/djangoappLaden Sie als Nächstes den systemd-Daemon mit dem folgenden Befehl neu:
systemctl daemon-reloadStarten Sie als Nächstes den Gunicorn-Dienst und aktivieren Sie ihn, damit er beim Systemneustart gestartet wird:
systemctl start gunicorn.socket
systemctl enable gunicorn.socketÜberprüfen Sie als Nächstes den Status von Gunicorn mit dem folgenden Befehl:
systemctl status gunicorn.socketSie sollten die folgende Ausgabe erhalten:
? 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.Konfigurieren Sie Nginx als Reverse-Proxy für Django
Als Nächstes müssen Sie Nginx als Reverse-Proxy konfigurieren, um Django zu bedienen.
Um dies zu tun, erstellen Sie eine Nginx-Konfigurationsdatei:
nano /etc/nginx/conf.d/django.confFügen Sie die folgenden Zeilen hinzu:
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;
}
}Speichern und schließen Sie die Datei, und überprüfen Sie dann Nginx auf Konfigurationsfehler:
nginx -tAusgabe:nginx: die Konfigurationsdatei /etc/nginx/nginx.conf Syntax ist ok
nginx: Konfigurationsdatei /etc/nginx/nginx.conf Test war erfolgreichStarten Sie schließlich den Nginx-Dienst neu, um die Änderungen anzuwenden:
systemctl restart nginxUm den Status von Nginx zu überprüfen, führen Sie aus:
systemctl status nginxBeispielausgabe:
? nginx.service - Ein leistungsstarker Webserver und ein 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 Ein leistungsstarker Webserver und ein 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 Ein leistungsstarker Webserver und ein Reverse-Proxy-Server.Jetzt können Sie auf die Django-Anwendung über die URL http://django.example.com/admin zugreifen. Sie können auch auf die Django-Anwendung über die URL http://django.example.com/ zugreifen.

Fazit
Herzlichen Glückwunsch! Sie haben erfolgreich eine Django-Anwendung mit Gunicorn und Nginx als Reverse-Proxy installiert. Sie können jetzt beginnen, Ihre Python-Anwendung mit dem Django-Framework bereitzustellen.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.