Django生产环境(Debug=False)下CSS文件无法加载问题求助
解决Debug=False时CSS加载失败的问题
1. 收集Django静态文件
当DEBUG=False时,Django不会自动托管静态文件,必须先把所有静态文件统一收集到指定目录:
- 先在
settings.py中添加STATIC_ROOT配置,指定静态文件的存放路径:STATIC_ROOT = '/home/user/projectdir/static_collected' - 执行收集命令,将所有app的静态文件复制到
STATIC_ROOT目录:
执行时输入python manage.py collectstaticyes确认即可。
2. 修正Nginx静态文件配置
你当前的Nginx静态文件路径匹配错误,修改为以下配置:
server { server_name mydomain.com www.mydomain.com; location = /favicon.ico { access_log off; log_not_found off; } # 匹配/static/路径,指向收集后的静态文件目录 location /static/ { alias /home/user/projectdir/static_collected/; expires 30d; # 可选,设置静态文件缓存,优化加载速度 } location / { include proxy_params; proxy_pass http://unix:/run/gunicorn.sock; } }
注:
alias会直接替换匹配的/static/路径,确保Nginx能正确找到静态文件,比root更适配这种场景。
3. 检查静态文件目录权限
确保Nginx进程能读取静态文件目录:
- 查看Nginx运行用户(通常是
www-data或nginx):ps aux | grep nginx - 修改目录权限:
sudo chown -R www-data:www-data /home/user/projectdir/static_collected sudo chmod -R 755 /home/user/projectdir/static_collected
4. 重启服务生效
- 重启Nginx:
sudo systemctl restart nginx - 重启Gunicorn:
sudo systemctl restart gunicorn
验证
将settings.py中DEBUG改为False,重启服务后访问网站,检查CSS是否正常加载,同时访问mydomain.com/abcd确认自定义404页面正常显示。
内容的提问来源于stack exchange,提问作者randomguy4city
相关产品推荐
相关产品推荐

