Django React Nginx服务管理静态文件



我觉得有点尴尬地问一个以前已经回答的问题 - 但是,我觉得让节点提供静态文件而不是django是有区别的。由WebPack捆绑并由Node捆绑的CSS无问题,我遇到问题的是使用get_static_prefix Decorator为管理员CSS和其他几个文件提供服务。

文件结构如下:

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

/etc/nginx/sites-vailable/project

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

和设置中的设置.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现在也无法正常工作时,我已经对某些内容进行了错误配置。这是:

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;
}

最新更新