Site icon bintorosoft.com

Python Web Stack: Gunicorn + Nginx sauber konfigurieren

Close up human hand is playing Online Game computer using keyboard in home

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

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

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

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:

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Exit mobile version