Django Deployment - Gunicorn, DB Aktualisierungen, Verständnisfragen
Verfasst: Dienstag 21. Juni 2016, 20:36
Hallo.
Ich bin inzwischen noch immer kein guter, aber ein weniger schlechter Django Programmierer und deswegen geht es jetzt in Richtung Deployment Situation testen/kennenlernen. An sich funktioniert auch Alles, aber ein paar (Verständnis)Fragen habe ich doch noch:
Mein Server Setup: nginx + Gunicorn + Postgres + Django/Python3
Mein Dev Setup: Django/Python3 runserver + sqlite
(Und ja ich weiß, man sollte beim entwickeln und Deployment den selben DB-Server haben. Das habe ich auch, da ich noch mal nen Test-Zwischenschritt über eine VM gehe, die quasi dem Setup des Servers entspricht. Aber das ignorieren wir für die folgenden Fragen bitte einfach.)
Meine Fragen:
1. Ich "synchronisiere" per git. Sehe ich es richtig, dass ich (neben Dateien wie settings.py) ALLE __pychache__ Ordner und vor allem auch die "migrations" Ordner nicht mit "synchronisiere", da diese ja den Datenbank-Stand meiner Entwicklungsumgebung widerspiegeln?
2. Aktualisierungen mit Gunicorn:
2.a. Wenn ich eine Datei (z.b. views.py) hochlade, übernimmt Gunicorn diese erst nach einem Gunicorn-Neustar. Ein klassisches "reload" (nicht restart) scheint Gunicorn nicht zu kennen, oder?
2.b. Was passiert wenn ich auf dem Server/Gunicorn ein "migrate" ausführe? Ist dann die Seite nur kurz nicht erreichbar? Werden alle Sessions gekillt?
2.c. Was passiert wenn ein User gerade nen Kommentar o.ä. schreibt während die DB (migrate) aktualisiert wird? Gibts es da Probleme? Managed Django das? Oder Postgres selbst?
Im Moment ist ja Alles einfach, da ich der einzige bin der auf der Website rumsurft. Ich will aber vermeiden, dass es Fehler gibt, wenn mal 100 Leute darauf gleichzeitig damit interagieren.
Ich bin inzwischen noch immer kein guter, aber ein weniger schlechter Django Programmierer und deswegen geht es jetzt in Richtung Deployment Situation testen/kennenlernen. An sich funktioniert auch Alles, aber ein paar (Verständnis)Fragen habe ich doch noch:
Mein Server Setup: nginx + Gunicorn + Postgres + Django/Python3
Mein Dev Setup: Django/Python3 runserver + sqlite
(Und ja ich weiß, man sollte beim entwickeln und Deployment den selben DB-Server haben. Das habe ich auch, da ich noch mal nen Test-Zwischenschritt über eine VM gehe, die quasi dem Setup des Servers entspricht. Aber das ignorieren wir für die folgenden Fragen bitte einfach.)
Meine Fragen:
1. Ich "synchronisiere" per git. Sehe ich es richtig, dass ich (neben Dateien wie settings.py) ALLE __pychache__ Ordner und vor allem auch die "migrations" Ordner nicht mit "synchronisiere", da diese ja den Datenbank-Stand meiner Entwicklungsumgebung widerspiegeln?
2. Aktualisierungen mit Gunicorn:
2.a. Wenn ich eine Datei (z.b. views.py) hochlade, übernimmt Gunicorn diese erst nach einem Gunicorn-Neustar. Ein klassisches "reload" (nicht restart) scheint Gunicorn nicht zu kennen, oder?
2.b. Was passiert wenn ich auf dem Server/Gunicorn ein "migrate" ausführe? Ist dann die Seite nur kurz nicht erreichbar? Werden alle Sessions gekillt?
2.c. Was passiert wenn ein User gerade nen Kommentar o.ä. schreibt während die DB (migrate) aktualisiert wird? Gibts es da Probleme? Managed Django das? Oder Postgres selbst?
Im Moment ist ja Alles einfach, da ich der einzige bin der auf der Website rumsurft. Ich will aber vermeiden, dass es Fehler gibt, wenn mal 100 Leute darauf gleichzeitig damit interagieren.