Django ALLOWED_HOSTS修改不生效及静态文件加载异常问题
Django部署在DO Droplet的问题解决指南
一、Gunicorn重启后ALLOWED_HOSTS配置不生效
原因
- Systemd的gunicorn服务配置未正确关联项目环境,重启时加载的仍是旧进程的配置。
- 普通重启未彻底杀死所有gunicorn子进程,残留进程继续使用旧配置运行。
解决步骤
- 检查并修复systemd服务文件
打开/etc/systemd/system/gunicorn.service,确认ExecStart路径指向正确的虚拟环境和项目WSGI文件:
修改后执行:ExecStart=/path/to/your/venv/bin/gunicorn --workers 3 --bind unix:/path/to/your/project.sock your_project.wsgi:applicationsudo systemctl daemon-reload sudo systemctl restart gunicorn - 强制彻底重启
若普通重启无效,先停止服务再杀死所有gunicorn进程,重新启动:sudo systemctl stop gunicorn sudo pkill -f gunicorn sudo systemctl start gunicorn
二、域名访问静态文件返回302无法加载
原因
- Nginx静态文件目录权限不足,无法读取文件触发重定向。
- Nginx静态路径配置与Django的
STATIC_URL不匹配,或静态文件收集不完整。
解决步骤
- 修复静态文件目录权限
给Nginx默认运行用户www-data赋予静态目录的读取权限:sudo chmod -R 755 /root/myproject_webapp/staticfiles/ sudo chown -R www-data:www-data /root/myproject_webapp/staticfiles/ - 调整Nginx静态文件配置
修改location /static/块,确保路径正确并添加缓存优化:
重启Nginx使配置生效:location /static/ { alias /root/myproject_webapp/staticfiles/; expires 30d; access_log off; }sudo systemctl restart nginx - 重新收集静态文件
确保所有Django静态文件都被收集到指定目录:python manage.py collectstatic --noinput
内容的提问来源于stack exchange,提问作者Adnan Tamimi
相关产品推荐
相关产品推荐

