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

排查AWS Elastic Beanstalk部署Django应用时EbExtension构建失败问题

Django部署AWS Elastic Beanstalk时EbExtension构建失败及依赖缺失问题解决

错误原因分析

你遇到的EbExtension build failed错误,根源在于.ebextensions/Django.config里的commands配置存在两个关键问题:

  1. 执行时机错误:commands是在EC2实例初始化的早期阶段运行,此时应用代码还未部署到服务器,/var/app/current目录根本不存在,所以pip install -r /var/app/current/requirements.txt会因找不到文件而失败。
  2. 虚拟环境激活无效:每个command都是独立的shell进程,source激活虚拟环境的操作仅对当前进程生效,下一个command依然会使用系统全局的pip,而非虚拟环境内的pip。另外,EB默认用sh执行命令,source是bash内置命令,在sh环境下可能不兼容(部分系统sh指向dash,需用.替代source,但即便如此,进程隔离的问题依然存在)。

而移除commands后出现502错误,是因为EB没有自动安装你的依赖包,导致Django应用启动时无法导入所需模块。

解决方案

方案一:改用container_commands执行依赖安装

container_commands是在应用代码被同步到/var/app/staging目录后执行的,正好满足读取requirements.txt的条件,同时可以直接指定虚拟环境的pip路径来安装依赖:

container_commands:
  01_install_requirements:
    # 替换为你实际的虚拟环境路径,或用通配符匹配
    command: "/var/app/venv/staging-LQM1lest/bin/pip install -r /var/app/staging/requirements.txt"

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: django-pixel/core/wsgi.py

方案二:利用EB内置配置自动安装依赖

AWS Elastic Beanstalk提供了内置的依赖安装机制,只需在option_settings中指定RequirementsFile,平台会自动在虚拟环境中安装依赖,无需手动写命令:

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: django-pixel/core/wsgi.py
    RequirementsFile: requirements.txt

这个方案更简洁,也避免了手动指定虚拟环境路径可能带来的问题(比如虚拟环境目录名变化)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:06:14