前提
django 部署模式为 debug = False(debug = True 找不到静态文件基本是配置错误,去详细检查 settings.py 里的 STATIC_URL、STATICFILES_DIRS 配置)
现象
访问静态文件 网页状态码为:404
首先要用 F12,查看 静态文件的路由,然后用 这个路由 去 静态文件目录 找这个文件是否存在。
可能原因
- Nginx 配置文件没有启用 root 用户(使用:user root;)
- Nginx 配置静态文件路径没使用绝路径(如:/root/home/djangoprojects/djangoblog/static_root)
- Nginx 配置静态文件路径没使用 django 项目的 settings.py 里的 STATIC_ROOT 指向的目录
- Nginx 的配置规则屏蔽了 js、css 等结尾的静态文件
- django 项目的 settings.py 里的 STATIC_ROOT 不是独立的目录,确保是独立的目录而不是 py 语句(如:STATIC_ROOT = 'static_root/' ,然后重新收集静态文件:python manage.py collectstatic)
- django 项目的 settings.py 里的 STATIC_ROOT 指向的目录和文件权限不是当前用户的(授权:chmod -R 755 /root/home/djangoprojects/djangoblog)
- 静态文件对应的路径下,文件不存在(路由没错,文件不存在,可能是没有收集到 static_root 目录下,重新收集静态文件:python manage.py collectstatic)
- 静态文件对应的路由拼错了(路由错了,文件存在)
静态文件配置
静态文件管理官网文档
- https://docs.djangoproject.com/zh-hans/3.0/howto/static-files/(Django 3.x)
- https://docs.djangoproject.com/zh-hans/2.2/howto/static-files/(Django 2.x)
Nginx 下部署 django
centos7 virtualenv django uwsgi nginx 部署站点