python-3.x - Django静态文件404使用nginx

标签 python-3.x django ubuntu nginx gunicorn

我知道这已经被问过几次了,但这些解决方案似乎都不适合我。这是我第一次部署 Django 项目,作为引用,我遵循了这个教程:https://linuxhint.com/create_django_app_ubuntu/
因此,完全有可能有什么东西完全飞过我的头顶。
nginx 配置(我尝试使用别名而不是 root,带有和不带有斜杠,确保静态文件不属于 root 等):

upstream django {
    server 127.0.0.1:8000;
}

server {
    listen 80;

    location /static/ {
        root /home/bryan/Projects/portfolio;
        try_files $uri =404;
    }

    location / {
        try_files $uri @send_to_django;
    }

    location @send_to_django {
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://django;
    }
}
设置.py:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
笔记:
  • django.contrib.staticfiles已安装
  • python manage.py collectstatic似乎在工作
  • 我相信我在模板中正确引用了静态文件:
  • {% load static %}
        <link rel="stylesheet" type="text/css" href="{% static 'home/css/index.css' %}">
    
    我的文件结构:
  • 投资组合(django 项目根目录)
  • 主页(django 应用程序)
  • static(项目静态文件)
  • home(家庭应用的静态文件)
  • CSS




  • 除了静态文件之外,该站点在此设置下也可以完美运行。

    最佳答案

  • 确保您的静态文件位于/home/bryan/Projects/portfolio/static

  •     STATIC_ROOT = os.path.join(BASE_DIR, 'static')
        STATICFILES_DIRS = (
            os.path.join(BASE_DIR, 'static'),
        )
    
    上述设置可能会导致静态文件被收集到/home/bryan/Projects/portfolio/static/static 目录
  • 检查静态目录权限
  • 在你的 nginx conf 中使用“alias”而不是“root”
  • 关于python-3.x - Django静态文件404使用nginx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64069653/

    相关文章:

    python - 处理 python 子模块的导入

    python - 如何检查全局范围内变量是否存在?

    regex - 使正则表达式更具体以排除某些字符的修改

    node.js - 在 Ubuntu 13.10 上安装 NodeJS

    linux - rcs -u motd 破坏锁

    python - 使用 groupby 和名称列表合并两个数据框

    mysql - 如何使用 South 消除唯一约束?

    django - 为什么 django send_mail 无法无误地发送电子邮件?

    python - 排除目录

    由于外部库,Java 无法在终端中编译