Nginx+Django+Gunicorn部署:静态/媒体文件加载异常求助
解决Django站点静态/媒体文件加载失败(仅index.css可加载)问题
针对你遇到的问题,从常见原因出发,按以下步骤排查:
1. 修复目录权限问题
Nginx默认以www-data用户运行,而/root目录的权限通常限制严格,普通用户无法访问,这是最常见的故障诱因:
- 优先建议将静态/媒体文件目录迁移到非root路径,比如
/var/www/djangoproj/static和/var/www/djangoproj/media - 若需保留原路径,调整目录权限让
www-data拥有访问权限:chown -R www-data:www-data /root/djangoproj/static /root/djangoproj/media chmod -R 755 /root/djangoproj/static /root/djangoproj/media
2. 确认Django静态文件已正确收集
生产环境下必须执行collectstatic命令,将所有应用的静态文件汇总到指定目录:
python manage.py collectstatic
执行时需确认目标目录与Nginx配置中alias指向的/root/djangoproj/static完全一致(需匹配Django settings.py里的STATIC_ROOT配置)。
3. 验证Nginx配置正确性
- 检查配置语法是否合法:
若有错误,根据提示修正后重启Nginx:nginx -tsystemctl restart nginx - 核对
alias路径匹配逻辑:如果前端请求/static/js/main.js,Nginx会去/root/djangoproj/static/js/main.js查找文件,需确保该文件实际存在。
4. 检查文件实际存在性与请求路径
- 登录服务器,直接查看
/root/djangoproj/static目录下的文件,确认除index.css外的其他文件是否存在,路径是否与前端请求的URL一致。 - 打开浏览器开发者工具(F12),查看Network面板中加载失败文件的状态码(通常为404),核对请求URL对应的服务器文件路径是否正确。
5. 检查媒体文件配置
确保Django settings.py中已正确配置媒体文件参数:
MEDIA_ROOT = '/root/djangoproj/media' MEDIA_URL = '/media/'
同时确认媒体文件已上传到MEDIA_ROOT指定的目录中。
内容的提问来源于stack exchange,提问作者fdf228
相关产品推荐
相关产品推荐

