DjangoNginx: statics文件不被送达

问题描述 投票:0回答:1

我尝试用Nginx在远程服务器上部署我的Django项目,但我的文件没有被服务。

我想我的路径不正确,但不知道为什么。

python3 manage.py collectstatic获取我所有在intensecov_static文件夹中的文件。

homezebra

- intensecov_app
    - intensecov
        - coverage (project)
        - manage.py
        - static
        - ...
- intensecov_static
    - css
       - style.css
    - images
    - ...

设置.py

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static'),
    os.path.join(BASE_DIR,'randomization_management/static'),
    os.path.join(BASE_DIR,'randomization_settings/static'),
    os.path.join(BASE_DIR,'randomization/static'),
)

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))

STATIC_ROOT = '/home/zebra/intensecov_static'

etcnginxsites-availableintensecov

server {
        listen 80;
        server_name 192.168.80.9;
        root /home/zebra/intensecov_app;

        location /static {
                alias /home/zebra/intensecov_static;
        }

        location / {
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_redirect off;
                if (!-f $request_filename) {
                        proxy_pass http://127.0.0.1:8000;
                        break;
                }
        }
}

django nginx django-staticfiles static-files
1个回答
0
投票

希望你的nginx.conf是你声明的。

    location /static {
            alias /home/zebra/intensecov_static;
    }

试试这个

    location /static {
            alias /home/zebra/intensecov_static/;
    }

看来nginx需要尾部的 / 以使文件夹正常工作.或者说,至少在删除后面的静态文件时,静态文件的服务中断了。/.


0
投票

STATIC_ROOT是所有静态文件被收集的地方,当你运行命令 python manage.py collectstatic而STATIC_URL是指向STATIC_ROOT的。

查看这里以供参考 https:/docs.djangoproject.comen3.0refsettings#std:setting-STATIC_ROOT。

改变nginx文件的位置应该可以解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.