Seite 4 von 4
Re: Postgresql Tabellen
Verfasst: Dienstag 21. Mai 2019, 15:39
von Hypec
Das habe ich soweit verstanden ich will jetzt nur wissen wo ich sagen kann dass das webbackend auf 0.0.0.0 lauschen soll?
Re: Postgresql Tabellen
Verfasst: Dienstag 21. Mai 2019, 15:48
von __blackjack__
Da wo Du jetzt gerade `localhost` stehen hast.
Re: Postgresql Tabellen
Verfasst: Dienstag 21. Mai 2019, 17:19
von Hypec
Vielen Dank. An der ganzen sache gibt es nur ein großes Problem. Um zu funktionieren muss die Website im Verzeichnis html liegen welches den Pfad '/var/www/virtual/hypec/html' hat, das liegt glaube ich aber auserhalb des Geltungsbereich der gunicorn.ini. Zumindestens bekomme ich sobald dort meine Seite liegt und ich den die Pfade in der Datei geändert habe einen Fehler beim "supervisorctl status". gibt es da eine Lösung?
Re: Postgresql Tabellen
Verfasst: Dienstag 21. Mai 2019, 19:36
von nezzcarth
@Hypec: Ich hätte gestern abend noch den restlichen Weg dazu schreiben sollen, hatte aber keine Lust mehr

'/var/www/virtual/hypec/html' ist hier irrelevant, das brauchst du nur, wenn du mit konkreten Dateien arbeiten willst. Die Idee ist hier aber, dass man den Webserver dazu anweist, komplette Pfade (also z.B. /, was bedeutet: den gesamten Webspace) an interne Interfaces durchzuschleusen. Jedes Mal, wenn du dann https://dein_name.uber.space/ aufrufst, wird der Request an den internen Gunicorn, der auf Port 8000 lauscht, durchgereicht. Dafür muss Gunicorn, wie __blackjack__ schon sagte, an das Interface 0.0.0.0 gebunden werden.
Das geht so:
Leg eine Datei '/home/<BENUTZER>/my_app/my_app_config.py' mit folgendem Inhalt an:
Dann änderst du die entsprechende Zeile in /home/<BENUTZER>/etc/services.d/gunicorn.my_app.ini zu:
Code: Alles auswählen
command=/home/<BENUTZER>/my_app/venv/bin/gunicorn test:app -c /home/<BENUTZER>/my_app/my_app_config.py
Anschließend folgendes in der Shell eingeben:
Code: Alles auswählen
$ supervisorctl reread
$ supervisorctl update
$ uberspace web backend set / --http --port 8000
$ uberspace web backend list
/ http:8000 => OK, listening: PID 12847, /home/<BENUTZER>/my_app/venv/bin/python3 /home/<BENUTZER>/my_app/venv/bin/gunicorn test:app -c /home/<BENUTZER>/my_app/my_app_config.py
Fertig.
Re: Postgresql Tabellen
Verfasst: Dienstag 21. Mai 2019, 21:51
von Hypec
Danke das du dir die mühe gemacht hast mir das zu Erklären.
Jetzt aber nochmal zurück zu der frage ob SQLite oder MYSQL besser ist?
Re: Postgresql Tabellen
Verfasst: Dienstag 21. Mai 2019, 22:43
von __blackjack__
@Hypec: Die Frage ist wofür besser. Wenn Du viele zeitgleiche Schreibzugriffe erwartest ist SQLite nicht geeignet. Ansonsten kommt es darauf an was sonst noch gefordert wird.
Re: Postgresql Tabellen
Verfasst: Mittwoch 22. Mai 2019, 21:23
von nezzcarth
@Hypec: Vielleicht ist folgende Seite hilfreich:
https://www.sqlite.org/whentouse.html
Die sqlite-Macher sind der Auffassung, dass sich sqlite auch für viele Webseiten eignet. Da gibt es aber durchaus auch abweichende Meinungen. Oft nimmt man sqlite, weil die Hürde sehr niedrig ist. Python bringt von sich aus schon eine einfache Anbindung für sqlite mit und man kann ohne weitere Vorarbeiten loslegen. Mariadb (Mysql) und Postgresql sind eigenständige, recht komplexe Programme, die eingerichtet und gewartet werden müssen. Da Mariadb aber bei Uberspace eh schon vorhanden ist, einfach benutzt werden kann, und man sich um nichts kümmern muss, ist die Hürde deutlich niedriger als sonst. Für Mariadb braucht man eine externe Bibliothek, das sollte aber in dem Fall kein Problem sein (unter anderem dafür betreibt man ja den Aufwand mit der virtuellen Umgebung).
Re: Postgresql Tabellen
Verfasst: Samstag 25. Mai 2019, 17:29
von Hypec
Vielen dank ich probiere das ganze mit SQLite aus das sollte eigentlich für meine anforderungen reichen.
Kann ich irgendwie in der gunicorn Datei noch einstellen das Python print Befehle in den Logs mit angezeigt werden? Da dies Leider momentan nicht der Fall ist.
Re: Postgresql Tabellen
Verfasst: Sonntag 26. Mai 2019, 10:52
von nezzcarth
Hypec hat geschrieben: Samstag 25. Mai 2019, 17:29
Kann ich irgendwie in der gunicorn Datei noch einstellen das Python print Befehle in den Logs mit angezeigt werden?
Ja, das geht. Aber print Statements sind eigentlich nicht für Logging/Debugging im Produktivbetrieb gedacht. Dafür nimmt man z.B. das 'logging'-Modul aus der Standardbibliothek.
Wie auch immer, zunächst müssen die Logfiles konfiguriert werden (in my_app/my_app/my_app_config.py):
Code: Alles auswählen
accesslog = '/home/<BENUTZER>/logs/gunicorn.my_app.log'
errorlog = '/home/<BENUTZER>/logs/gunicorn.my_app.err'
capture_output = True
'capture_output = True' macht das, wonach du gefragt hast. Ich würde aber darauf verzichten und wie gesagt das Logging-Modul verwenden. Da der Standardoutput von Python gebuffered wird, landen die Nachrichten nicht sofort im Log. Das ist auch sinnvoll, wenn man es aber trotzdem abstellen möchte, muss man in 'etc/services.d/gunicorn.my_app.ini' folgende Zeile hinzufügen:
Anschließend muss alles neugestartet werden:
Code: Alles auswählen
supervisorctl reread
supervisorctl update
supervisorctl restart gunicorn
Du solltest dir wirklich mal die Doku von gunicorn durchlesen, da wird das eigentlich alles ganz gut erklärt. Ich habe nur die absolut notwendigen Basiseinstellungen gezeigt, aber es gibt, wie du siehst, noch diverse weitere, die du selbst durchführen solltest.
Re: Postgresql Tabellen
Verfasst: Sonntag 26. Mai 2019, 19:57
von Hypec
Vielen dank für deine Hilfe.
Ja ich glaube auch das es sehr hilfreich wäre wenn ich mich mal intensiver mit gunicorn beschäftige.