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

求助:无法通过Elastic Beanstalk部署Django项目的问题排查

排查AWS Elastic Beanstalk部署Django项目的502/健康降级问题

1. 初始问题复盘确认

  • 配置文件提取失败:检查Zip包结构,必须直接包含项目根文件(如manage.py、requirements.txt、.ebextensions/等),不能嵌套外层文件夹。例如本地项目文件夹为myproject,打包时需选中该文件夹内的所有内容,而非将myproject整个打包。
  • aws-elasticbeanstalk-ec2-role缺失:确认创建的IAM角色已附加AWSElasticBeanstalkWebTier、AWSElasticBeanstalkWorkerTier(若为worker环境)及AmazonS3FullAccess托管策略,且已在Elastic Beanstalk环境配置的「实例」选项卡中指定该角色。

2. 当前502与健康降级问题排查步骤

2.1 分析eb-engine.log关键错误

从日志中重点查找以下内容:

  • ERROR/CRITICAL级别条目,尤其是与Nginx、Gunicorn(或uWSGI)、Django启动相关的报错
  • 典型异常:
    • Failed to start gunicorn service:WSGI服务器启动失败
    • ModuleNotFoundError:Django项目模块路径配置错误
    • Permission denied:项目目录或静态文件权限异常

2.2 验证Elastic Beanstalk配置文件

确保.ebextensions/目录下存在正确的配置文件(如django.config),示例配置如下:

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: myproject.wsgi:application  # 替换为你的项目名.wsgi路径
  aws:elasticbeanstalk:environment:proxy:staticfiles:
    /static: static  # 静态文件路径映射,需提前完成collectstatic操作

注意:WSGIPath必须与项目中wsgi.py的路径完全匹配,例如项目根目录下myproject文件夹内的wsgi.py,需写为myproject.wsgi:application。

2.3 检查静态文件配置

  • 在Django的settings.py中确认以下设置:
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    STATIC_URL = '/static/'
    
  • 本地打包前必须执行python manage.py collectstatic,将所有静态文件收集到STATIC_ROOT目录,并确保该目录被包含在Zip包中。

2.4 查看实例日志与进程状态

  • 通过Elastic Beanstalk控制台「日志」选项卡下载完整日志,重点查看/var/log/nginx/error.log,该日志会记录502错误的具体原因(如Nginx无法连接到Gunicorn)
  • 检查Gunicorn日志(通常位于/var/log/web.stdout.log或/var/log/web.stderr.log),确认Django是否能正常启动,排查是否存在数据库连接失败、依赖缺失等问题。

2.5 验证依赖包完整性

  • 确保项目根目录下的requirements.txt包含生产环境所需全部依赖,如gunicorn、django、数据库驱动(例如使用PostgreSQL时的psycopg2-binary)等
  • 检查Elastic Beanstalk部署日志,确认pip install过程是否成功,是否存在依赖安装失败的情况。

3. 快速验证流程

  1. 重新打包项目:确保Zip包根目录直接包含manage.py、requirements.txt、.ebextensions/,无多余外层文件夹
  2. 本地模拟生产环境:创建虚拟环境,安装requirements.txt依赖,执行gunicorn myproject.wsgi:application,验证服务器能否正常启动
  3. 检查安全组配置:确保Elastic Beanstalk环境的安全组开放80端口(HTTP),若使用RDS数据库,需确保EC2实例的安全组被允许访问RDS实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:12:37