2017-02-28 5 views
3

Ich fühle mich ein bisschen peinlich eine Frage zu stellen, die zuvor beantwortet wurde - aber ich denke, es gibt einen Punkt Unterschied im Hinblick auf die Knoten dienen die statischen Dateien im Gegensatz zu Django. Das CSS von webpack gebündelt und von Knoten bedient funktioniert ohne Probleme, wo ich habe Probleme mit dem Admin CSS und ein paar andere Dateien mit dem get_static_prefix Dekorator.Django React Nginx Serving Admin statische Dateien

Die Dateistruktur ist wie folgt:

root 
    | 
    public 
     - templates 
     - static 
      | <-- collectstatic adding files here 
     - vendor 
    | 
     server 
     - app1 
     - app2 
      | settings.py   

/etc/nginx/sites-available/Projekt

server { 
    listen xxx.xxx.xxx.xxx:8000; 
    server_name xxx.xxx.xxx.xxx; 
    location /static { 
      alias /root/se/env/public/static/; 
    } 
} 

und das Setup in settings.py

STATIC_URL = '/root/se/env/public/static/' 
MEDIA_URL = '/media/' 
STATIC_ONLY_URL = '/static_only/' 

if not DEBUG: 
    MEDIA = '/media', 
    STATIC_ROOT = '/root/se/env/public/static/' 
    MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'public', 'media') 
    STATICFILES_DIRS = '/root/se/env/public/vendor/static/', 

I Ich bin jetzt schon eine Weile im Kreis herumgelaufen. Ich bin ziemlich neu in Django und verstehe nicht wirklich, wie das funktioniert. Von dem, was ich verstehen kann, sind die STATICFILES_DIRS, wo collectstatic die statischen Dateien sammelt und das STATIC_ROOT ist, wo die statischen Dateien ausgegeben werden, nachdem collectstatic ausgeführt wurde. Ich denke, die STATIC_URL ist der Punkt, an dem ich falsch liege - aber ich habe nicht viel Glück dabei, es herauszufinden.

Wie es aussieht, funktioniert der Admin CSS nicht, wenn DEBUG = True jetzt auch, also habe ich etwas falsch konfiguriert. Es ergibt sich:

Not Found: /static/admin/css/base.css 
+0

Haben Sie versucht, STATIC_URL in "/ static /" zu ändern? Versuchen Sie auch, den nginx-Speicherort/static in/static/zu ändern. –

+0

@Kamal - vielen Dank für Ihre Antwort. Ich habe das versucht, aber nichts bekommen. Ich habe die Frage mit ein bisschen mehr Info aktualisiert. – monkeyman

Antwort

2

Ihre location /static ist falsch. Die alias Direktive ersetzt Teile des URI, wenn der Pfadname erstellt wird. Der location Parameter und die alias Parameter sollte beiden Ende mit einem / oder keines von beiden Enden mit einem /:

location /static { 
    alias /root/se/env/public/static; 
} 

oder:

location /static/ { 
    alias /root/se/env/public/static/; 
} 

In der Tat, da die alias Parameter mit dem location Parameter enden, Sie sollten die alias Richtlinie überhaupt nicht verwenden. Siehe den Hinweis am Ende von the alias documentation.

location /static { 
    root /root/se/env/public; 
} 
+0

guten Fang, danke. Ich habe es noch nicht geschafft, das Admin-Css zu bekommen, um es zu zeigen, aber das brachte mich einen Schritt näher. – monkeyman

Verwandte Themen