簡體   English   中英

Django React Nginx提供管理靜態文件

[英]Django React Nginx serving admin static files

我覺得有點尷尬的問一個之前已經回答過的問題 - 但是我覺得有一個不同點就是讓節點服務於靜態文件而不是django。 由webpack捆綁並由節點提供服務的css沒有問題,我遇到的問題是使用get_static_prefix裝飾器提供admin css和另外幾個其他文件。

文件結構如下:

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

在/ etc / nginx的/網站可用/項目

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

和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/',

我已經在圈子里走了一段時間了。 我是Django的新手,並沒有真正了解它是如何工作的。 根據我的理解,STATICFILES_DIRS是collectstatic收集靜態文件的地方,STATIC_ROOT是在運行collectstatic之后轉儲靜態文件的地方。 我認為STATIC_URL是我出錯的地方 - 但我沒有太多運氣搞清楚。

現在,當DEBUG = True時,admin css無法正常工作,所以我錯誤配置了一些東西。 結果是:

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

您的location /static是錯誤的。 在形成路徑名時, alias指令替換URI的一部分。 location參數和alias參數都應該以/結尾,或者兩者都不以/結尾:

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

要么:

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

實際上,因為alias參數以location參數結束,所以根本不應該使用alias指令。 請參閱alias文檔末尾的注釋。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM