AWS Lightsail上Django+Nginx+Gunicorn静态文件加载失败求助
Django静态文件无法加载的修复方案(AWS Lightsail Ubuntu)
针对你遇到的静态文件无法加载问题,核心问题出在Nginx路径配置错误和未执行静态文件收集命令,按以下步骤修复:
1. 修正Nginx静态文件配置
你的cht_web.conf中location /static/的root参数使用错误,替换成alias并指向正确的静态文件目录:
server { listen 80; server_name xxx.xxx.xxx.xxx; location / { include proxy_params; proxy_pass http://localhost:8000/; } # 修正后的静态文件配置 location /static/ { alias /home/ubuntu/cht_web/staticfiles/; expires 30d; # 开启浏览器缓存优化加载速度 autoindex off; # 关闭目录索引,更安全 } }
区别说明:
root会将请求路径拼接在指定目录后,而alias会直接替换请求路径。你的静态文件最终存放在STATIC_ROOT(即/home/ubuntu/cht_web/staticfiles/),用alias能精准匹配到文件位置。
2. 收集所有静态文件到STATIC_ROOT
即使DEBUG=True,使用Gunicorn时Django不会自动托管静态文件,必须手动执行收集命令:
cd /home/ubuntu/cht_web python manage.py collectstatic
执行时输入yes确认,系统会把所有APP的静态文件、STATICFILES_DIRS目录下的文件统一复制到STATIC_ROOT目录。
3. 修复文件权限
确保Nginx进程(默认用户www-data)有权读取静态文件:
sudo chown -R www-data:www-data /home/ubuntu/cht_web/staticfiles/ sudo chmod -R 755 /home/ubuntu/cht_web/staticfiles/
4. 重启Nginx生效配置
sudo systemctl restart nginx
完成以上步骤后,刷新网页即可加载静态文件。
内容的提问来源于stack exchange,提问作者Leik Caro Berenguer
相关产品推荐
相关产品推荐

