Gunicorn+Nginx部署Django时静态图片无法加载求助
解决Django静态图片加载失败但CSS正常的问题
核心问题分析
CSS能正常加载说明Nginx的静态资源路由配置基本生效,但图片加载失败,结合你的目录结构和代码,主要问题出在图片路径引用错误,同时静态文件收集环节可能存在配置偏差。
分步解决方案
1. 修正模板中的图片路径
从你的目录结构可以看到,picture.jpg实际位于/var/www/myname/static/admin/images/,但你的模板代码中直接引用了{% static 'picture.jpg' %},这会生成/static/picture.jpg的URL,与实际文件位置不符。
修改模板代码为:
<img src="{% static 'admin/images/picture.jpg' %}" class="img-fluid">
2. 配置正确的STATIC_ROOT并重新收集静态文件
- 在
settings.py中设置正确的静态文件收集目录:BASE_DIR = Path(__file__).resolve().parent.parent STATIC_URL = '/static/' # 指向Nginx配置中alias的目录 STATIC_ROOT = '/var/www/myname/static/' - 运行Django的静态文件收集命令,确保所有静态资源(包括admin的图片、CSS)都被同步到
STATIC_ROOT目录:
运行时确认输入python manage.py collectstaticyes完成收集。
3. 检查静态文件目录权限
确保Nginx进程有读取静态文件的权限,执行以下命令设置权限:
# 更改目录所属用户为Nginx运行用户(通常是www-data) sudo chown -R www-data:www-data /var/www/myname/static/ # 设置目录和文件的读写权限 sudo chmod -R 755 /var/www/myname/static/ sudo chmod -R 644 /var/www/myname/static/*
4. 验证Nginx配置并重启服务
- 检查Nginx配置语法是否正确:
sudo nginx -t - 如果配置无错误,重启Nginx服务:
sudo systemctl restart nginx
内容的提问来源于stack exchange,提问作者Shalofty
相关产品推荐
相关产品推荐

