繁体   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