Python-basierte Webanwendungen profitieren von einem stabilen und performanten Webstack. Die Kombination aus Gunicorn als WSGI-Server und Nginx als Reverse Proxy ist weit verbreitet, da sie Skalierbarkeit, Sicherheit und einfache Wartbarkeit bietet. In diesem Leitfaden erfahren Einsteiger, IT-Studierende und Junior Network Engineers, wie Gunicorn und Nginx sauber installiert, konfiguriert und optimiert werden.
Voraussetzungen
- Linux-Server (Ubuntu/Debian oder CentOS/RHEL)
- Python ≥ 3.8
- pip und virtuelle Umgebungen
- Nginx installiert und lauffähig
- Sudo- oder Root-Rechte
Python-Projekt vorbereiten
Erstellen Sie ein Projektverzeichnis und richten Sie eine virtuelle Umgebung ein:
mkdir /var/www/pyapp
cd /var/www/pyapp
python3 -m venv venv
source venv/bin/activate
pip install wheel
pip install gunicorn flask
Beispiel Flask-App
echo "from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello from Flask via Gunicorn!'
if name == 'main':
app.run()" > app.py
Gunicorn als Service einrichten
Damit die Anwendung automatisch startet und im Hintergrund läuft, wird ein systemd-Service erstellt.
sudo nano /etc/systemd/system/pyapp.service
[Unit]
Description=Gunicorn instance to serve Python App
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/pyapp
Environment="PATH=/var/www/pyapp/venv/bin"
ExecStart=/var/www/pyapp/venv/bin/gunicorn --workers 3 --bind unix:/var/www/pyapp/pyapp.sock app:app
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable pyapp
sudo systemctl start pyapp
sudo systemctl status pyapp
Nginx als Reverse Proxy
Nginx leitet Anfragen an den Gunicorn-Socket weiter und übernimmt SSL, Caching und Lastverteilung.
sudo nano /etc/nginx/sites-available/pyapp
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://unix:/var/www/pyapp/pyapp.sock;
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;
}
access_log /var/log/nginx/pyapp_access.log;
error_log /var/log/nginx/pyapp_error.log;
}
Site aktivieren und Nginx testen
sudo ln -s /etc/nginx/sites-available/pyapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
SSL/TLS mit Let’s Encrypt
Für sichere HTTPS-Verbindungen:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
sudo systemctl reload nginx
Gunicorn-Optimierungen
- Anzahl der Worker anpassen:
--workers 3entspricht 2xCPU+1 - Timeouts einstellen:
--timeout 60 - Preload aktivieren für schnelleren Start:
--preload - Separate Logs für stdout/stderr definieren
Monitoring und Troubleshooting
journalctl -u pyapp -f
tail -f /var/log/nginx/pyapp_error.log
ps aux | grep gunicorn
Netzwerk- und Subnetzplanung
Bei Multi-Server oder Load-Balancing-Setups ist saubere IP- und Subnetzplanung essenziell.
IPv4 Subnetz
<math>
Server-IP = 192.168.220.10/24
Subnetzadresse = 192.168.220.10 & 255.255.255.0 = 192.168.220.0
Broadcastadresse = 192.168.220.0 | ~255.255.255.0 = 192.168.220.255
</math>
IPv6 Subnetz
<math>
Server-IP = 2001:db8:abcd:220::10/64
Subnetzadresse = 2001:db8:abcd:220:: & ffff:ffff:ffff:ffff:: = 2001:db8:abcd:220::0
Broadcastadresse = 2001:db8:abcd:220:ffff:ffff:ffff:ffff
</math>
Best Practices
- Gunicorn als systemd-Service laufen lassen
- Nginx als Reverse Proxy für SSL, Caching und Load Balancing
- Workeranzahl und Timeout an Serverressourcen anpassen
- Separate Logs für Gunicorn und Nginx
- Let’s Encrypt Zertifikate automatisieren
- Monitoring von CPU, RAM und Logs einrichten
- Netzwerk- und Subnetzplanung bei Multi-Server Setups beachten
- Virtuelle Umgebungen für Abhängigkeiten nutzen
- Regelmäßige Updates für Python, Gunicorn und Nginx
- Deployment-Workflows automatisieren und testen
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.

