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

Elastic Beanstalk部署Django报502及wsgi模块找不到错误

问题根因

502 Bad Gateway的直接原因是Gunicorn服务启动失败,8000端口无进程监听,Nginx转发请求时被拒绝。日志中ModuleNotFoundError: No module named 'mysite.wsgi'是Gunicorn启动失败的核心原因,由部署包结构错误、平台配置不兼容、参数冲突共同导致。

排查修复步骤
  • 修正部署包结构
    EB要求.ebextensions目录必须位于部署压缩包的最外层根目录,不能嵌套。根据你给出的本地路径,如果打包时选中的是repos/mydjangoproject整个目录,部署到服务器后文件结构为:

    /var/app/current/
    └── mysite/
        ├── .ebextensions/
        ├── mysite/
        │   ├── wsgi.py
        │   └── settings.py
        └── manage.py
    

    这种情况下你设置的PYTHONPATH=/var/app/current下无法找到mysite.wsgi模块,wsgi.py实际路径为/var/app/current/mysite/mysite/wsgi.py,不在Python搜索路径内。
    正确打包方式:进入repos/mydjangoproject/mysite目录(即包含manage.py和内层mysite项目包的层级),选中该目录下所有文件(包含.ebextensions、manage.py、内层mysite文件夹)打包为zip,确保解压后.ebextensions直接位于根目录,和内层mysite文件夹同级。

  • 适配Amazon Linux 2平台配置规则
    你使用的Python 3.8 running on 64bit Amazon Linux 2/3.3.14平台不再支持老版本Amazon Linux 1的aws:elasticbeanstalk:container:python命名空间配置,你写在django.config里的WSGIPath参数不会生效。AL2平台默认使用Gunicorn,优先读取根目录下的Procfile配置启动服务。
    首先修正.ebextensions/django.config内容,修正错误的DJANGO_SETTINGS_MODULE值,删除不生效的WSGIPath配置:

    aws:elasticbeanstalk:application:environment:
      DJANGO_SETTINGS_MODULE: "mysite.settings"
      PYTHONPATH: "/var/app/current:$PYTHONPATH"
    

    然后在项目根目录(和.ebextensions、manage.py同级)新建无后缀名的Procfile文件,写入启动命令:

    web: gunicorn mysite.wsgi:application
    
  • 校验现有配置正确性
    你当前的wsgi.py中DJANGO_SETTINGS_MODULE配置为mysite.settings,和环境变量值一致,这部分无需修改,只需确认内层mysite目录下确实存在settings.py文件,没有放错路径。

  • 验证修复结果
    重新部署后如果仍有问题,可以通过SSH连接到EB实例,执行以下命令手动启动Gunicorn验证模块路径是否正确:

    cd /var/app/current
    source /var/app/venv/*/bin/activate
    gunicorn mysite.wsgi:application
    

    如果手动启动无报错,说明配置已经正确,重启服务即可恢复正常。另外确认打包时没有将虚拟环境目录、.git目录、__pycache__等冗余文件打入压缩包,避免文件结构异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:27:25