Provisioning von Django Applikationen

Django, Flask, Bottle, WSGI, CGI…
Antworten
nezzcarth
User
Beiträge: 574
Registriert: Samstag 16. April 2011, 12:47

Samstag 16. Dezember 2017, 19:07

Hallo :)

angenommen, ich habe eine Web-Applikation (z.B. eine Blog Software oder so was), die in Python mit Django geschrieben ist. Wenn ich nun mehrere Instanzen derselben Software auf demselben Linux Host-System anbieten möchte, was wäre da eurer Erfahrung nach eine sinnvolle Lösung?

Was ich gerne hätte, wäre, dass man die existierenden Instanzen leicht managen (starten, stoppen, updaten) und ohne großen Aufwand neue erzeugen kann. Zur Zeit wäre es ja modern, so was mit Docker-Container zu basteln und/oder Tools wie Ansible zu verwenden. Allerdings kommt mir das dann doch vielleicht etwas überdimensioniert vor. Gerade bei Docker habe ich den Eindruck, dass das vor allem als Infrastrukur-Lösung im Enterprise-Sektor mit diversen (Hardware) Servern/Nodes gedacht ist -- weniger für die Art von "privatem Shared-Hosting" auf einem einzelnen System, dir mir vorschwebt. Stimmt das? Gibt es vielleicht Python oder Django spezifische Dinge, mit denen man so etwas lösen könnte?
Benutzeravatar
noisefloor
User
Beiträge: 2495
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Samstag 16. Dezember 2017, 19:36

Hallo,

Vorschlag: Jede Instanz auf einem eigenen WSGI-Applikationsserver (wie Guncorn) auf einem eigenen Port (z.B 8001, 8002 und 8003) laufen lassen und nginx davor als Reverse-Proxy, Dieser leite dann z.B. `ip_addresse/foo` auf Gunicorn auf Post 8001 weiter, `ip_addresse/bar` auf 8002 etc.

Das wird auf jeden Fall funktionieren, ist ja "nur" ein "aufgebohrtes" Standard-Setup.

Gruß, noisefloor
Benutzeravatar
noisefloor
User
Beiträge: 2495
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Samstag 16. Dezember 2017, 19:43

Nachtrag: Warum brauchst du eigentlich verschiedene Instanzen? Bei der o.g. Methode teilen sich die Instanzen teilen sich ja trotzdem die selbe Datenbank, inkl. Nutzerdaten, Login-Daten etc.

Gruß, noisefloor
Zuletzt geändert von noisefloor am Samstag 16. Dezember 2017, 19:46, insgesamt 1-mal geändert.
__deets__
User
Beiträge: 3712
Registriert: Mittwoch 14. Oktober 2015, 14:29

Samstag 16. Dezember 2017, 19:45

Docker ist dein freund. Man kann sich da was frickeln mit venvs. Aber docker ist da umfassender und besser, weil du damit auch die Management Tools bekommst.
nezzcarth
User
Beiträge: 574
Registriert: Samstag 16. April 2011, 12:47

Samstag 16. Dezember 2017, 20:12

Danke erstmal euch beiden.

@noisefloor:
Die Idee mit dem Applikationsserver finde ich ganz gut, in die Richtung kann man sicher trotz deiner Bedenken mal schauen. Die Frage ist aktuell eher hypothetisch, einen konkreten Anwendungszweck gibt es im Moment nicht. Die Idee war halt so eine Art shared-hosting, bei der man die Software eben als Service für verschiedene Leute anbietet. Ich habe so etwas zum Beispiel an Unis manchmal gesehen, dass man sich als Institut Dinge wie Wikis oder eine Blogsoftware vom jeweiligen Rechenzentrum einrichten lassen kann. Kann natürlich auch sein, dass die das noch ganz anders machen, aber das war die Idee für die Frage. Und da wären verschiedene, von einander isolierte Instanzen schon gut.

@__deets__:
Okay, das ist beruhigend :D Docker kam mir bisher halt sehr "enterprise-ig" vor, aber vielleicht habe ich da einfach nur die falschen Quellen angeschaut.
Antworten