Ein stabiler Django-Stack auf Linux erfordert die koordinierte Konfiguration von Nginx als Webserver, Gunicorn als WSGI-Server für die Python-Anwendung und PostgreSQL als Datenbank. Mit dieser Kombination können Webanfragen effizient verarbeitet, statische Dateien ausgeliefert und Datenbankzugriffe performant realisiert werden. Dieser Leitfaden richtet sich an Einsteiger, IT-Studierende und Junior Network Engineers und zeigt Schritt für Schritt, wie ein Django-Stack aufgebaut und optimiert wird.
Systemvoraussetzungen
- Linux-Distribution: Ubuntu 22.04 LTS oder CentOS 9
- Root- oder sudo-Zugriff
- Python 3.10+ mit virtualenv
- Nginx als Webserver
- Gunicorn als WSGI-Server
- PostgreSQL 13+ als Datenbank
- Optional: Supervisor oder systemd zur Prozessverwaltung
PostgreSQL Installation und Konfiguration
PostgreSQL dient als relationale Datenbank für Django. Ein dedizierter Benutzer für die Anwendung erhöht die Sicherheit.
Installation
# Ubuntu
sudo apt update
sudo apt install postgresql postgresql-contrib -y
CentOS
sudo dnf install postgresql-server postgresql-contrib -y
sudo postgresql-setup initdb
sudo systemctl enable postgresql
sudo systemctl start postgresql
Datenbank und Benutzer anlegen
sudo -u postgres psql
CREATE DATABASE django_db;
CREATE USER django_user WITH PASSWORD 'Str0ngP@ssw0rd';
GRANT ALL PRIVILEGES ON DATABASE django_db TO django_user;
q
Sicherheit und Remote-Zugriff
- pg_hba.conf prüfen und lokale Verbindungen auf md5 setzen
- Remote-Zugriff über Listen Addresses in postgresql.conf definieren
Python Umgebung vorbereiten
Python-Umgebungen sollten isoliert mit virtualenv genutzt werden, um Abhängigkeiten sauber zu verwalten.
sudo apt install python3-venv python3-pip -y
python3 -m venv /var/www/django/venv
source /var/www/django/venv/bin/activate
pip install --upgrade pip
pip install django gunicorn psycopg2-binary
Django-Projekt erstellen
cd /var/www/django
django-admin startproject myproject
cd myproject
python manage.py migrate
python manage.py createsuperuser
Gunicorn als WSGI-Server konfigurieren
Gunicorn übernimmt die Ausführung von Django-Anfragen und leitet sie über Nginx weiter.
Gunicorn testen
source /var/www/django/venv/bin/activate
gunicorn --bind 127.0.0.1:8000 myproject.wsgi:application
systemd-Service für Gunicorn
sudo nano /etc/systemd/system/gunicorn.service
[Unit]
Description=gunicorn daemon for Django
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/django/myproject
ExecStart=/var/www/django/venv/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 myproject.wsgi:application
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable gunicorn
sudo systemctl start gunicorn
sudo systemctl status gunicorn
Nginx als Reverse Proxy konfigurieren
Nginx leitet HTTP-Anfragen an Gunicorn weiter und dient gleichzeitig als Webserver für statische Dateien.
Serverblock erstellen
sudo nano /etc/nginx/sites-available/django.conf
server {
listen 80;
server_name example.com www.example.com;
root /var/www/django/myproject;
access_log /var/log/nginx/django.access.log;
error_log /var/log/nginx/django.error.log;
location /static/ {
alias /var/www/django/myproject/static/;
}
location /media/ {
alias /var/www/django/myproject/media/;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo ln -s /etc/nginx/sites-available/django.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Netzwerk- und Subnetzplanung
Für Multi-Server Setups sollten Webserver, Datenbank und interne Services in separaten Subnetzen betrieben werden.
IPv4 Subnetz
<math>
Web-Server-IP = 192.168.510.10/24
DB-Server-IP = 192.168.510.11/24
Subnetzadresse = 192.168.510.0
Broadcastadresse = 192.168.510.255
</math>
IPv6 Subnetz
<math>
Web-Server-IP = 2001:db8:abcd:510::10/64
DB-Server-IP = 2001:db8:abcd:510::11/64
Subnetzadresse = 2001:db8:abcd:510::0
Broadcastadresse = 2001:db8:abcd:510:ffff:ffff:ffff:ffff
</math>
Best Practices
- Dedizierte Benutzer für Webserver und Gunicorn
- Gunicorn mit systemd oder Supervisor verwalten
- Django-Settings für Production konfigurieren (DEBUG=False, Allowed Hosts)
- Statische Dateien sammeln:
python manage.py collectstatic - PostgreSQL-Benutzer mit minimalen Rechten
- Firewall- und Subnetzsegmentierung beachten
- SSL/TLS für HTTPS erzwingen
- Regelmäßige Backups und Monitoring einrichten
- Logs für Nginx, Gunicorn und Django regelmäßig prüfen
- Testumgebung identisch zur Produktion betreiben
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











