You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django ALLOWED_HOSTS修改不生效及静态文件加载异常问题

Django部署在DO Droplet的问题解决指南

一、Gunicorn重启后ALLOWED_HOSTS配置不生效

原因

  • Systemd的gunicorn服务配置未正确关联项目环境,重启时加载的仍是旧进程的配置。
  • 普通重启未彻底杀死所有gunicorn子进程,残留进程继续使用旧配置运行。

解决步骤

  1. 检查并修复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:application
    
    修改后执行:
    sudo systemctl daemon-reload
    sudo systemctl restart gunicorn
    
  2. 强制彻底重启
    若普通重启无效,先停止服务再杀死所有gunicorn进程,重新启动:
    sudo systemctl stop gunicorn
    sudo pkill -f gunicorn
    sudo systemctl start gunicorn
    

二、域名访问静态文件返回302无法加载

原因

  • Nginx静态文件目录权限不足,无法读取文件触发重定向。
  • Nginx静态路径配置与Django的STATIC_URL不匹配,或静态文件收集不完整。

解决步骤

  1. 修复静态文件目录权限
    给Nginx默认运行用户www-data赋予静态目录的读取权限:
    sudo chmod -R 755 /root/myproject_webapp/staticfiles/
    sudo chown -R www-data:www-data /root/myproject_webapp/staticfiles/
    
  2. 调整Nginx静态文件配置
    修改location /static/块,确保路径正确并添加缓存优化:
    location /static/ {
        alias /root/myproject_webapp/staticfiles/;
        expires 30d;
        access_log off;
    }
    
    重启Nginx使配置生效:
    sudo systemctl restart nginx
    
  3. 重新收集静态文件
    确保所有Django静态文件都被收集到指定目录:
    python manage.py collectstatic --noinput
    

内容的提问来源于stack exchange,提问作者Adnan Tamimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:15:16