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

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 -y

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

su - postgres  
psql

Erstellen 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  
exit

An 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 --version

Beispielausgabe:

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 virtualenv

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

mkdir ~/djangoapp  
cd ~/djangoapp  
virtualenv djangoenv

Aktivieren Sie als Nächstes die Django-virtuelle Umgebung mit dem folgenden Befehl:

source djangoenv/bin/activate

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

pip install django gunicorn psycopg2-binary

An 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 ~/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 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 migrate

Beispielausgabe:

  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

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

./manage.py createsuperuser

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

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:

Django-Anmeldung

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

Django-Admin-Dashboard

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

Wenn 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: 47384

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

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

deactivate

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

Speichern und schließen Sie die Datei, und setzen Sie dann die richtigen Berechtigungen für das Django-Projektverzeichnis:

chown -R www-data:root ~/djangoapp

Laden Sie als Nächstes den systemd-Daemon mit dem folgenden Befehl neu:

systemctl daemon-reload

Starten 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.socket

Sie 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.conf

Fü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 -t
Ausgabe:
nginx: die Konfigurationsdatei /etc/nginx/nginx.conf Syntax ist ok
nginx: Konfigurationsdatei /etc/nginx/nginx.conf Test war erfolgreich

Starten Sie schließlich den Nginx-Dienst neu, um die Änderungen anzuwenden:

systemctl restart nginx

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

systemctl status nginx

Beispielausgabe:

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

Django-App

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.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.