uberspace Django static files über Webserver ausliefern

Django, Flask, Bottle, WSGI, CGI…
Antworten
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hi,

hat jemand Erfahrung, wie man auf uberspace die static files vom apache ausliefern lassen kann, sodass der uwsgi das nicht machen braucht?

mit

Code: Alles auswählen

uberspace web backend set /static --apache
kann ich angeben, wo in meinem webspace unter /home/<username>/html/ die static files liegen.

Muss ich jetzt der Django-App in den settings.py auch den Ort /home/<username>/html/static für den Ort der static files angeben?

Muss ich in der myDjangoProject.ini die Einstellungen für den uwsgi auch noch die static files mappen per

Code: Alles auswählen

base2 = /home/<username>/html
static-map = /static=%(base2)/static
Oder ist das jetzt alles doppelt gemoppelt?


https://lab.uberspace.de/guide_django.html

https://manual.uberspace.de/web-backends/#specific-path


LG
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
LukeNukem
User
Beiträge: 232
Registriert: Mittwoch 19. Mai 2021, 03:40

naheliegend hat geschrieben: Donnerstag 29. Juli 2021, 17:39 Muss ich jetzt der Django-App in den settings.py auch den Ort /home/<username>/html/static für den Ort der static files angeben?
Kannst Du machen, aber... an sich ist so ein Webserver ein sehr effizientes Programm, um Daten von einem Persistierungsmedium auszugeben, und das klassische Medium ist... genau, eine Festplatte (die heute auch gern ein NAS, SAN, eine SSD oder NVMe sein darf)... Also leitet man die Location /static/ einfach auf das static-Verzeichnis um, damit die Daten nicht mehr von Python gelesen und an den Webserver geliefert, sondern direkt vom Webserver / Reverse Proxy ausgeliefert werden. Sprich: der Webserver liest das Zeug direkt vom Persistierungsmedium, idealerweise sogar aus dem Dateisystempuffer, und liefert es aus .
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

@LukeNukem: Ich verstehe nicht wie deine Antwort zur Frage passt.

@naheliegend: Zu der Konfiguration bei uberspace kann ich nichts sagen, aber in der settings.py musst du den Ort angeben an den der Befehl "collectstatic" die statischen Dateien kopiert, damit sie von einem separaten Programm ausgeliefert werden. Also ja, wenn deine statischen Dateien dort hin sollen, dann musst du dort den Pfad angeben und dann beim deployen "collectstatic" aufrufen.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

du musst in deinen Templates für die HTML-Daten für die statischen Dateien die URL setzen, die auf die URL zeigt, wo der Apache die statischen Dateien ausliefert. Danach schaut der Browser ja. Solange da eine Datei zurückkommt ist es dem Browser egal, ob die vom Apache oder Django oder ... ausgeliefert werden.

BTW: ich benutze Whitenoise zum Ausliefern von statischen Inhalten. Das intergriert sich in Django und man muss Apache / nginx / whatever nicht extra für statische Dateien konfgurieren. Wo das Limit von Whitnoise ist kann ich dir nicht sagen, meine Django-Seiten haben eher wenig Traffic. Aber angeblich ist Whitenoise auch relativ performant.

Gruß, noisefloor
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

noisefloor hat geschrieben: Freitag 30. Juli 2021, 10:59 Hallo,

du musst in deinen Templates für die HTML-Daten für die statischen Dateien die URL setzen, die auf die URL zeigt, wo der Apache die statischen Dateien ausliefert. Danach schaut der Browser ja. Solange da eine Datei zurückkommt ist es dem Browser egal, ob die vom Apache oder Django oder ... ausgeliefert werden.
Ich bin mir nicht sicher, ob ich deinen Satz verstanden habe, aber aktuell zeigen die URL im template (die sich aus den Bausteinen der settings.py zum Teil zusammensetzt), die Einstellungen für den uwsgi und für den Apache auf den selben /static Ordner. Ich weiß nur nicht, wer jetzt was ausliefert. Wenn ich den Apache jetzt abstellen würde, dann würde Django problemlos über den uwsgi die static files ausliefern.

noisefloor hat geschrieben: Freitag 30. Juli 2021, 10:59 BTW: ich benutze Whitenoise zum Ausliefern von statischen Inhalten. Das intergriert sich in Django und man muss Apache / nginx / whatever nicht extra für statische Dateien konfgurieren. Wo das Limit von Whitnoise ist kann ich dir nicht sagen, meine Django-Seiten haben eher wenig Traffic. Aber angeblich ist Whitenoise auch relativ performant.
Schaue ich mir mal an. Danke.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

sparrow hat geschrieben: Freitag 30. Juli 2021, 05:28 @naheliegend: Zu der Konfiguration bei uberspace kann ich nichts sagen, aber in der settings.py musst du den Ort angeben an den der Befehl "collectstatic" die statischen Dateien kopiert, damit sie von einem separaten Programm ausgeliefert werden. Also ja, wenn deine statischen Dateien dort hin sollen, dann musst du dort den Pfad angeben und dann beim deployen "collectstatic" aufrufen.
Danke, ich kannte

Code: Alles auswählen

python manage.py collectstatic 
gar nicht, aber jetzt ergibt alles einen Sinn. :D
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
SeBu
User
Beiträge: 16
Registriert: Samstag 4. Januar 2014, 11:36

Du musst bei einem Uberspace nicht unbedingt ~/html nutzen.

Im Verzeichnis

Code: Alles auswählen

/var/www/virtual/<username>/
kann man Unterordner mit den aufgeschalteten Domains erstellen. Dadurch kann man z.B.

Code: Alles auswählen

/var/www/virtual/<username>/beispiel-domain.de/static
als Ziel für Djangos collectstatic benutzen.
Mit

Code: Alles auswählen

$ uberspace web backend add beispiel-domain.de/static --apache
wird dann dieser Unterordner über Apache ausgeliefert.
gomez72
User
Beiträge: 71
Registriert: Sonntag 28. März 2021, 09:57

Grundsatzfrage: was ist denn besser, wer die statics ausliefert, uwsgi oder Apache ? und warum ?
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich benutze das whitenoise Modul für Django für statische Inhalte. Grund: für das, was ich mache, vereinfacht es das Setup.

Was grundsätzlich besser ist kann man pauschal nicht sagen - das hängt u.a. auch davon ob, wie viele Request du pro Minute / Sekunde erhälst.

Gruß, noisefoloor
Antworten