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

Capistrano部署Rails应用到AWS EC2后Puma重启失败求助

核心问题说明

你的错误核心是Capistrano配置为使用systemd管理Puma服务,但你的EC2服务器上不存在名为puma_<app-name>_production的systemd服务单元,导致重启失败。

解决步骤

  • 第一步:登录EC2服务器确认Puma服务状态
    先SSH登录到你的AWS EC2实例,执行以下命令查看现有Puma相关服务:

    sudo systemctl list-units --type=service | grep puma
    

    同时执行命令检查是否有正在运行的Puma进程:

    ps aux | grep puma
    
  • 第二步:根据检查结果对应处理

    • 情况A:能查到正在运行的Puma进程,但查不到systemd服务
      说明前任工程师没有使用systemd管理Puma,你需要修改本地Capistrano配置,关闭systemd管理选项:
      打开项目下的config/deploy/production.rb文件,删除或注释掉set :puma_systemd_service, true这类配置,改回默认的Puma管理方式后重新部署即可。

    • 情况B:能查到Puma的systemd服务,但名称不是puma_<app-name>_production
      直接在config/deploy/production.rb中添加配置,指定正确的服务名即可:

    set :puma_service_name, "你实际查到的Puma服务名"
    
    • 情况C:完全没有运行的Puma进程,也查不到对应systemd服务
      说明服务器上还未配置Puma的systemd服务,直接在本地项目根目录执行以下命令,自动生成并上传服务配置到服务器:
    bundle exec cap production puma:systemd:install
    

    执行完成后登录服务器重载systemd配置:

    sudo systemctl daemon-reload
    

    手动启动一次Puma服务验证是否正常:

    sudo systemctl start puma_<app-name>_production
    

    执行sudo systemctl status puma_<app-name>_production确认服务运行正常后,再重新执行部署命令即可。

  • 额外注意项
    如果启动Puma服务时报Ruby版本找不到的错误,检查systemd服务文件(默认路径为/etc/systemd/system/puma_<app-name>_production.service)中的Ruby执行路径,和服务器上实际的Ruby路径(可执行which ruby查看)是否一致,不一致的话修改服务文件后重载systemd配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:57:03