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

部署Django至AWS Elastic Beanstalk遇502网关错误求助

解决Django部署AWS Elastic Beanstalk出现502网关错误的问题

核心问题定位

你的502错误大概率是Gunicorn无法找到Django的WSGI入口文件,根源在于代码仓库的多层结构(根目录下有node和python子文件夹)导致EB默认的Python路径配置无法定位到myproject模块。

关键配置修正

1. 调整.ebextensions/django.config配置

针对你的项目结构,修改配置文件如下,确保PYTHONPATH和WSGIPath设置准确:

option_settings:
  aws:elasticbeanstalk:application:environment:
    # 将python子文件夹加入Python模块搜索路径
    PYTHONPATH: "/opt/python/current/app/python:$PYTHONPATH"
    DJANGO_SETTINGS_MODULE: myproject.settings
  aws:elasticbeanstalk:container:python:
    # 直接指定WSGI文件的相对路径(相对于代码部署根目录/opt/python/current/app)
    WSGIPath: python/myproject/wsgi.py

或者,在PYTHONPATH正确的前提下,也可以保持WSGIPath为模块格式:

WSGIPath: myproject.wsgi:application

两种方式都可行,直接指定文件路径的方式更不容易出错。

2. 确认依赖包配置

确保python/requirements.txt中包含gunicorn,EB会自动安装该文件内的依赖,缺少Gunicorn会导致无法启动WSGI服务:

gunicorn>=20.1.0
# 其他Django依赖...

排查验证步骤

1. 登录EB实例检查文件结构

通过SSH登录到EB的EC2实例,确认代码部署路径和myproject的位置:

# 替换为你的密钥和实例IP
ssh -i your-key-pem-file.pem ec2-user@your-ec2-instance-ip
# 进入EB代码部署根目录
cd /opt/python/current/app/
# 查看目录结构,确认python文件夹存在
ls -la
# 进入python文件夹,确认myproject模块存在
cd python/
ls -la myproject/

需要看到wsgi.py和settings.py文件。

2. 查看Gunicorn错误日志

EB的Web服务日志存放于/var/log/目录,查看Gunicorn的错误输出:

cat /var/log/web.stderr.log

如果日志中出现ModuleNotFoundError: No module named 'myproject',说明PYTHONPATH配置未生效;如果是ImportError,则可能是Django依赖未安装或settings配置有误。

3. 手动启动Gunicorn测试

在实例中手动启动Gunicorn,验证路径是否正确:

cd /opt/python/current/app/python/
# 启动Gunicorn,指定WSGI模块
gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application

如果能正常启动且无报错,说明路径配置正确,问题可能出在EB的配置加载环节;如果启动失败,根据错误提示调整依赖或路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:18:17