https mit Flask

Django, Flask, Bottle, WSGI, CGI…
Antworten
mr_egbert
User
Beiträge: 21
Registriert: Montag 13. Januar 2020, 13:33

Guten Morgen,

ich möchte ein Zertifkat von Let´s Encrypt holen und auf meinem vServer installieren. Von Let´s Encrypt wird certbot empfohlen (https://certbot.eff.org/). Dort wiederum wird nach der Software und dem System auf dem Server gefragt (Apache, Nginx, Haproxy, Plesk, Web Hosting Product oder None above). Mein Server läuft auf Ubunt 18.04.

Die Flask-App start mit:

Code: Alles auswählen

app.run(host='0.0.0.0', port='80', debug=False)
Bevor ich etwas falsch installiere frage ich lieber nach:
  • Ist es sinnvoll das Zertifikat mit certbot zu installieren?
  • Was muss bei certbot als Software wählen? 'None above'?
  • Wie muss ich die Flask-App anpassen?
Weiß jemand Rat?
Viele Grüße
Martin
thorstenHH
User
Beiträge: 11
Registriert: Samstag 20. Juni 2020, 20:06

Ich mache es bei Django so,. das ich Django mit wgsi Apache einbinde, was der wohl auch der empfohlen weg ist. Flask soll auch wgsi kompatibel sein. Quick und Dirty geht aber auch über mode redirect.
Vorteil ist hier auch das man statische File von Apache bereitstellen kann. In dem Fall installiert man das Zertifikat ganz normal mit certbot

Bei Flask kann aber wohl auch das Zertifikat direkt einbinden, kann ich aber leider nichts zu beitragen
Benutzeravatar
__blackjack__
User
Beiträge: 14012
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@thorstenHH: WSGI ist schon der empfohlene Weg, aber Apache oder was anderes ist eine weitere, davon unabhängige Entscheidung. Man kann beispielsweise auch etwas wie Gunicorn verwenden um die Webanwendung dort per WSGI einzubinden und das ganze dann hinter einen Nginx oder Apache als Reverse-Proxy packen. Man hat immer noch den Vorteil, dass der Webserver statische Daten ausliefern kann, aber zum Beispiel nicht mehr das Problem, dass das eigene Projekt keine C-Bibliotheken einbinden darf die Apache auch aus irgendwelchen Gründen einbindet, aber in einer anderen Version.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
nezzcarth
User
Beiträge: 1750
Registriert: Samstag 16. April 2011, 12:47

mr_egbert hat geschrieben: Samstag 27. Juni 2020, 07:39
  • Wie muss ich die Flask-App anpassen?
Noch mal in in einem Satz zusammengefasst: Du musst deine Flask-App eigentich gar nicht für HTTPS anpassen, da man Flask normalerweise nicht direkt nach außen freigibt, sondern hinter einen Reverse Proxy o.Ä. betreibt, der sich dann auch um HTTPS kümmert.


@thorstenHH: Ich bin mir nicht sicher, ob mod_wsgi noch der empfohlene Weg ist. Man sieht heute immer häufiger, dass Webanwendungen mit einem Anwendungsserver in einem Container betrieben werden und die Bereitstellung nach außen dann über einen Reverse Proxy erfolgt. Das hat viele Vorteile.
thorstenHH
User
Beiträge: 11
Registriert: Samstag 20. Juni 2020, 20:06

ich hab mich damit in der Tat nicht vertieft auseinandergesetzt, sondern es nur mehrmals so gelesen. Hab jetzt aber auch nicht geguckt von wann die Anleitungen waren. Ich habs halt dann so gemacht und es hat problemlos funktioniert.
Aber wie angedeutet ich hab es auch hier in der Entwicklungsumgebung auch schon mit mod_redirekt und proxy unetr umgesetzt, was den Vorteil hat das es mit Apache sehr simpel geht:
In der entsprechenden config für den Virtualhost braucht es nur

Code: Alles auswählen

RewriteEngine On
RewriteRule "^/(.*)" http://localhost:8000/$1 [P]
ProxyPassReverse / http://localhost:8000/
So hab ich das auch schon ewig für java tomcat gemacht. Bin auch recht neu mit Pyhon und Django um kenne dementsprechend nur eine Bruchteil der Möglichkeiten. Sind erstmal nur 2 Wege die bei mir funktionieren. Habe jetzt auch so ganz große Ansprüche an Performance und war deshalb damit erstmal zufrieden.,
Und es ist eine mögliche Lösung für das angesprochene Problem
mr_egbert
User
Beiträge: 21
Registriert: Montag 13. Januar 2020, 13:33

OK, vielen Dank für euer Feedback.
Ich hatte schon vermutet, dass es nicht üblich ist Flask so zu verwenden. Dann werde ich mich jetzt mal mit nginx und gunicorn auseinandersetzen.

Viele Grüße
Martin
Antworten