Nginx不提供静态文件

时间:2018-05-14 05:31:30

标签: django nginx digital-ocean

我刚刚在Ubunto服务器上部署了我的django网站。但它不会加载任何静态文件。

settings.py:

STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),]
STATIC_ROOT = 'staticfiles'

nginx / sites-available配置:

server {
        server_name 138.197.172.33;

        access_log off;

        location /staticfiles/ {
            root staticfiles;
        }

        location / {
            proxy_pass http://127.0.0.1:8001;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_set_header X-Real-IP $remote_addr;
            add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
        }
    }

错误:

...

[14/May/2018 05:28:28] "GET /static/vendors/underscore/underscore.js 
HTTP/1.1" 404 113
[2018-05-14 05:28:29,252] base: WARNING - Not Found: 
/static/vendors/bootstrap-notify-simple-wrapper/bootstrap-notify- 
simple-wrapper.min.js
[14/May/2018 05:28:29] "GET /static/vendors/bootstrap-notify-simple- 
wrapper/bootstrap-notify-simple-wrapper.min.js HTTP/1.1" 404 159
[2018-05-14 05:28:29,690] base: WARNING - Not Found: 
/static/js/custom.js
[14/May/2018 05:28:29] "GET /static/js/custom.js HTTP/1.1" 404 93
[2018-05-14 05:28:30,236] base: WARNING - Not Found: 
/static/js/converter.js
[14/May/2018 05:28:30] "GET /static/js/converter.js HTTP/1.1" 404 96
...

staticfiles文件夹包括:

admin  ajaximage  css  datatable  dm2bn  fonts  images  js  static  
tinymce  vendors

3 个答案:

答案 0 :(得分:0)

查看错误日志,链接指向/static/

  

[14 / May / 2018 05:28:28]“GET / static / 供应商/下划线/下划线.js   HTTP / 1.1“404 113

在您的配置中,您已将location设置为/staticfiles,但您的django配置称该网址为/static

因此,location应该是/static/,而不是/staticfiles/

location是URL,root是staticfiles目录的完整路径。

答案 1 :(得分:0)

您应该更改nginx配置,例如

location /static/ {
    alias /path/to/staticfiles;
}

您应该在nginx配置中给出绝对路径。

答案 2 :(得分:0)

确保所有静态文件都存在于项目目录的路径/static中。

在服务器上部署应用程序后,请不要忘记运行:

python manage.py collectstatic --link

--link将在目录/staticfiles中创建指向每个文件的符号链接。

Nginx配置应为:

location /static/ {
    alias /path/to/staticfiles;
}