Tutorials  /  Python

Flask App mit Nginx, uWSGI und SSL auf Debian 10 bereitstellen

Ccentron Redaktion · Mai 2025 ·5 Min. Lesezeit ·Python, Tutorial

Wenn du eine Webanwendung mit Flask entwickelst, wirst du schnell feststellen, dass der integrierte Server hauptsächlich für Entwicklungszwecke gedacht ist. In dieser Anleitung zeigen wir dir, wie du dein Flask-Projekt auf einem Debian-10-Cloudserver mit Nginx als Reverse Proxy, uWSGI als Applikationsserver und Certbot für eine SSL-Verschlüsselung betreibst.

Voraussetzungen für das Flask-Hosting auf Debian 10

  • Ein vollständig aktualisiertes Debian-10-System
  • Root-Rechte oder Sudo-Zugriff
  • Ein Domainname ist optional, wird aber empfohlen

Du kannst die Einrichtung auch ohne Domain durchführen, indem du localhost in der Nginx-Konfiguration verwendest. In diesem Fall ist es jedoch nicht möglich, ein gültiges SSL-Zertifikat über Certbot zu erhalten – diesen Schritt solltest du dann überspringen.

VM

Passende Infrastruktur bei centron

Skripte und Dienste brauchen irgendwann eine Umgebung, die durchläuft: ccloud³ VMs ab 3,12 € im Monat, stundengenau abgerechnet. Cloud Server mieten →

Schritt 1: Nginx unter Debian 10 installieren

Installiere das Nginx-Paket mit folgendem Befehl:

Konsole
# apt install nginx

Nach der Installation kannst du die Funktion testen, indem du die IP-Adresse deines Servers im Browser aufrufst. Die Standard-Startseite von Nginx sollte angezeigt werden.

Wenn du eine Domain besitzt, richte die DNS-Einträge entsprechend ein. In diesem Beispiel werden folgende Werte verwendet:

  • IPv4-Adresse: 192.0.2.123
  • Servernamen: example.com und www.example.com

Schritt 2: Flask installieren und uWSGI konfigurieren

Installiere zunächst die benötigten Python-Entwicklungstools sowie Flask und uWSGI:

Konsole
# apt install python3-pip python-dev
# pip3 install uwsgi flask

Erstelle danach ein Verzeichnis, in dem deine Website-Dateien liegen sollen:

Konsole
# mkdir /var/www/example

Falls du bereits eine Flask-Anwendung hast, verschiebe diese in das Verzeichnis /var/www/example. Alternativ kannst du zum Testen folgende einfache Anwendung erstellen:

Konsole
# nano /var/www/example/main.py

Füge diesen Code in die Datei ein:

Python
from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "Hello World!"

if __name__ == "__main__":
    app.run(host="0.0.0.0")

Jetzt richtest du eine Konfigurationsdatei für uWSGI ein:

Konsole
# nano /var/www/example/config-uwsgi.ini

Trage folgenden Inhalt in die Datei ein:

Code
[uwsgi]

app = main
module = %(app)
callable = app

socket = /var/www/example/example.sock
chdir = /var/www/example
chmod-socket = 666

processes = 4
die-on-term = true

Für leistungsfähigere Server kannst du den Wert bei processes entsprechend erhöhen.

Schritt 3: Nginx für Flask und uWSGI einrichten

Beginne damit, die Standardkonfiguration von Nginx zu löschen:

Konsole
# rm /etc/nginx/sites-enabled/default

Erstelle anschließend eine benutzerdefinierte Nginx-Konfigurationsdatei:

Konsole
# nano /var/www/example/config-nginx.conf

Füge die folgende Konfiguration in die Datei ein. Falls du keine Domain verwendest, ersetze example.com und www.example.com durch localhost bei server_name:

Code
server {

    listen 80;
    listen [::]:80;

    server_name example.com www.example.com;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/var/www/example/example.sock;
    }
}

Erstelle nun einen symbolischen Link, damit Nginx diese Konfiguration erkennt, indem du sie mit dem Verzeichnis conf.d verknüpfst:

Konsole
# ln -s /var/www/example/config-nginx.conf /etc/nginx/conf.d/

Um die neuen Einstellungen zu aktivieren, starte den Nginx-Dienst neu:

Konsole
# systemctl restart nginx

Schritt 4: uWSGI-Applikationsserver starten

Obwohl Nginx jetzt korrekt konfiguriert ist, um Anfragen an uWSGI weiterzuleiten, läuft der uWSGI-Dienst selbst noch nicht. Verwende nohup, um ihn im Hintergrund zu starten:

Konsole
# nohup uwsgi /var/www/example/config-uwsgi.ini &

Nach dem Start kannst du mit Strg + C ein SIGINT-Signal senden. Der uWSGI-Prozess sollte weiterhin im Hintergrund laufen. Für den produktiven Betrieb empfiehlt es sich, uWSGI beim Systemstart automatisch über einen systemd-Dienst ausführen zu lassen.

Rufe nun im Browser die Adresse deines Servers auf. Du solltest dort die Ausgabe Hello World! von deiner Flask-Anwendung sehen.

Schritt 5: Flask-Anwendung mit SSL absichern

Wenn du eine öffentliche Domain nutzt, kannst du die Website mit einem kostenlosen SSL-Zertifikat absichern.

Installiere zuerst Certbot zusammen mit dem passenden Plugin für Nginx:

Konsole
# apt install certbot python-certbot-nginx

Fordere anschließend das SSL-Zertifikat an:

Konsole
# certbot --nginx

Folge den Anweisungen von Certbot. Akzeptiere die Nutzungsbedingungen und wähle alle Domains aus, für die ein Zertifikat generiert werden soll (mit Enter bestätigen).

Wenn du gefragt wirst, ob HTTP-Anfragen automatisch auf HTTPS umgeleitet werden sollen, wähle die entsprechende Option zur Weiterleitung aus.

Fazit

Mit dieser verständlichen Anleitung läuft deine Flask-Webanwendung jetzt erfolgreich auf einem Debian-10-Server – betrieben über Nginx und uWSGI und geschützt durch ein SSL-Zertifikat von Certbot. Für den produktiven Einsatz solltest du uWSGI so einrichten, dass es beim Start automatisch unter einem Benutzer mit eingeschränkten Rechten ausgeführt wird. Weitere Empfehlungen findest du in der offiziellen Dokumentation von Flask und uWSGI.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Python
Teilen
Noch offene Fragen?

Unser Team hilft Ihnen bei Ihrem konkreten Setup weiter – von Menschen, die die Plattform selbst betreiben.

War dieses Tutorial hilfreich?

Ihre Antwort wird anonym gespeichert und hilft uns, die Tutorials zu verbessern.

Kommentare

Noch keine Kommentare – stellen Sie die erste Frage zu diesem Tutorial.

Zum Kommentieren anmelden

Kommentare stehen centron-Kunden offen. Melden Sie sich in Ihrem Konto an, um eine Frage zu diesem Tutorial zu stellen.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren