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

Elastic Beanstalk部署异常:Certbot证书获取失败及API故障求助

步骤化排查与解决方案

一、排查Certbot证书获取失败(Command 50_getcert执行失败)

  • 检查.ebextensions证书配置脚本
    找到.ebextensions目录中负责Certbot配置的文件(如certbot.config),定位50_getcert命令块:
    • 验证域名验证方式:若用HTTP-01验证,需确认Nginx临时配置能正确响应/.well-known/acme-challenge/路径的请求;若用DNS-01验证,需确保实例IAM角色拥有route53:ChangeResourceRecordSets权限
    • 核对--webroot-path参数:该路径必须与Nginx配置中的root路径完全匹配,否则ACME验证请求会返回404导致证书获取失败
  • 查看Certbot详细日志
    登录EC2实例,执行以下命令获取具体错误信息:
    cat /var/log/letsencrypt/letsencrypt.log
    
    重点关注域名解析失败、验证超时、权限不足等关键错误提示
  • 修复Certbot post-hook命令
    日志提示post-hook重定向到systemctl启动Nginx,说明原命令可能使用了过时的service语法(Amazon Linux 2默认使用systemd)。修改.ebextensions中的Certbot配置,将post-hook命令改为:
    --post-hook "systemctl reload nginx"
    

二、解决Nginx 404文件找不到错误

  • 检查Nginx配置文件
    登录实例后查看核心配置:
    cat /etc/nginx/nginx.conf
    cat /etc/nginx/conf.d/elasticbeanstalk/*.conf
    
    重点确认:
    • root指令是否指向正确的应用部署目录(通常为/var/app/current/)
    • location块的路由规则是否匹配API的实际端点,避免错误的rewrite导致请求转发到不存在的路径
  • 验证文件与权限
    检查部署目录的文件是否存在且权限正确:
    ls -l /var/app/current/
    
    若文件权限不足,执行以下命令调整:
    chmod -R 755 /var/app/current/
    
    本地测试API端点:
    curl localhost:80/your-api-endpoint
    
    确认是Nginx配置问题还是文件本身缺失

三、克隆环境配置一致性验证

  • 逐一对比环境配置
    在AWS控制台对比原环境与克隆环境的以下配置:
    • 实例配置:AMI版本(Amazon Linux 1/2差异极大)、实例类型、实例角色权限
    • 软件配置:平台分支(如Node.js/Python版本)、环境变量集合
    • 代码包内容:确保克隆环境部署的代码包含与原环境完全一致的.ebextensions目录,无遗漏或修改
    • 安全组规则:确认克隆环境安全组允许80/443端口的入站流量,规则与原环境一致
  • 查看实例初始化日志
    检查克隆环境实例的启动日志,定位初始化错误:
    cat /var/log/eb-engine.log
    cat /var/log/eb-hooks.log
    

四、部署回滚后的修复流程

  • 先回滚至可正常运行的旧版本,确保基础环境稳定
  • 采用增量修改策略:每次仅修改.ebextensions中的一个配置项,部署后观察结果,避免多变量干扰排查
  • 本地模拟验证:使用Amazon Linux 2的Docker镜像,在本地执行.ebextensions脚本,提前发现语法或权限问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:27:31