AWS Elastic Beanstalk为何回滚至旧版本?Laravel项目部署疑问
部署健康检查失败:Elastic Beanstalk默认会在部署后对实例做健康校验,如果Laravel启动失败——比如.env配置错误、依赖未安装完整、数据库连接失败——实例状态会变成严重或降级,直接触发自动回滚。去控制台的「Events」页面能看到具体报错,比如
500 Internal Server Error或者启动超时提示。实例资源不足:如果用的是t2.micro这类小规格实例,部署时安装依赖、启动Laravel进程可能会耗尽内存或CPU,导致应用挂掉,健康检查不通过就会触发回滚。可以尝试升级实例规格后再部署测试。
自定义部署脚本出错:Laravel部署时通常会添加自定义操作,比如
php artisan migrate、php artisan config:cache,如果这些脚本执行失败——比如迁移语句有误、缓存生成失败——部署会中断并触发回滚。检查.ebextensions或者platform/hooks目录下的脚本输出日志就能定位问题。平台版本不兼容:选的Elastic Beanstalk PHP平台版本和Laravel版本不匹配,比如用PHP 7.2部署Laravel 9.x,应用根本无法正常运行,自然会触发回滚。先确认Laravel要求的PHP版本,再对应选择匹配的平台版本。
负载均衡器健康检查配置错误:如果负载均衡器的健康检查路径设置错误——比如没指向Laravel的首页
/,或者目标路径返回404——会误判实例不健康,进而触发回滚。检查负载均衡器的健康检查设置,确保目标路径能返回200状态码。部署包损坏或缺失关键文件:打包部署的zip包如果漏了vendor目录、.env文件(或者.env里的关键配置为空),Laravel无法正常启动,健康检查失败后就会回滚。确认部署包包含所有必要文件,vendor可以本地打包,也可以配置让Elastic Beanstalk自动安装(需确保composer配置正确)。
内容的提问来源于stack exchange,提问作者ExCod3R

