AWS Elastic Beanstalk部署Django时实例命令执行失败如何解决
错误根因
首次部署的错误核心为实例部署时无法安装应用依赖,修改ALLOWED_HOSTS未解决该根因,因此二次部署仍然触发引擎执行错误。
常见触发原因如下:
requirements.txt配置异常:项目根目录未生成该文件、文件中包含本地环境特有的依赖包、依赖版本存在冲突、或存在需要编译的依赖但实例无对应编译环境- Elastic Beanstalk平台版本不匹配:环境使用的Python版本与本地开发的Python版本不一致,导致依赖兼容性错误
- 网络访问异常:实例无法正常访问公网依赖源,或私有依赖包无访问权限
.ebextensions自定义配置错误:自定义部署脚本存在语法错误或执行权限问题
排查步骤
- 首先拉取实例详细日志定位具体错误:执行
eb logs命令,重点查看/var/log/eb-engine.log中依赖安装环节的报错信息,可直接定位具体失败的依赖包或操作 - 校验
requirements.txt合法性:本地新建空白虚拟环境,使用当前项目的requirements.txt执行安装操作,验证是否可以正常完成安装,剔除仅本地环境需要的依赖包(如Windows平台专属的系统依赖) - 核对EB环境Python版本:在AWS控制台Elastic Beanstalk环境配置页,确认环境使用的Python版本与本地开发版本完全一致
- 检查自定义配置:如果项目存在
.ebextensions目录,确认所有YAML配置语法正确,自定义执行的命令无权限问题或语法错误
解决流程
- 基于
eb-engine.log的报错信息定位具体问题点,优先解决依赖安装相关错误 - 本地验证
requirements.txt可正常安装后,重新执行pip freeze > requirements.txt更新依赖文件 - 确认Django配置中ALLOWED_HOSTS已添加EB环境CNAME、
127.0.0.1、localhost,避免依赖问题解决后出现服务启动错误 - 修正所有问题后执行
eb deploy重新部署 - 若环境存在残留配置异常,可重新创建匹配Python版本的EB环境后重新部署
内容的提问来源于stack exchange,提问作者Shreyash mishra
相关产品推荐
相关产品推荐

