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

Digital Ocean部署Django应用访问IP返回502错误如何排查解决

Django + Gunicorn + Nginx部署502错误解决方法

错误根因

你遇到的connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream报错,核心是Nginx无法和Gunicorn服务通信,绝大多数情况是Gunicorn未正常启动,或套接字文件权限、路径配置错误导致。


排查&解决步骤

1. 检查Gunicorn服务运行状态

执行命令查看Gunicorn状态:
sudo systemctl status gunicorn
如果返回结果为failed而非active (running),执行以下命令查看Gunicorn启动错误日志:
sudo journalctl -u gunicorn
常见启动失败原因及修复方法:

  • 虚拟环境路径错误:确认配置中ExecStart的/home/mainuser/Personal_Web/vr/bin/gunicorn路径真实存在,注意不要把虚拟环境目录名打错(比如常见命名是venv而非vr)
  • WSGI文件路径错误:确认你的Django项目中myapp.wsgi:application路径正确,即项目根目录下存在名为myapp的子目录,子目录内有wsgi.py文件
  • 依赖缺失:进入虚拟环境后执行pip list确认Django、gunicorn及项目所需依赖均已安装
  • 目录权限:确认mainuser用户对/home/mainuser/Personal_Web目录有读写执行权限

2. 检查套接字文件状态

执行命令查看套接字状态:
sudo systemctl status gunicorn.socket
如果套接字未激活,执行sudo systemctl start gunicorn.socket启动。
之后执行命令查看套接字文件权限:
ls -l /run/gunicorn.sock
正常权限应为属主mainuser、属组www-data,如果权限不匹配,可在/etc/systemd/system/gunicorn.service的[Service]段新增两行配置:

RuntimeDirectory=gunicorn
RuntimeDirectoryMode=0755

修改完成后执行sudo systemctl daemon-reload重载systemd配置。

3. 验证Nginx配置有效性

执行以下命令确认Nginx配置无语法错误,且站点软链接已创建:

  • 创建软链接(如果未做):sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
  • 配置校验:sudo nginx -t
    如果返回syntax is ok、test is successful则配置有效,否则按照提示修正错误。

4. 重启服务验证

所有配置修正后依次执行命令重启服务:

sudo systemctl restart gunicorn.socket gunicorn.service
sudo systemctl restart nginx

之后再次访问服务器IP即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 13:06:07