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

AWS上Rails应用无法持续运行及重复操作问题求助

解决AWS EC2上Rails应用7*24持续运行的问题

先搞懂:弹性IP能帮你什么,帮不了什么

首先明确:弹性IP是AWS提供的固定公网IP,它的作用是避免EC2实例重启/停止后公网IP变动——如果你的实例现在每次重启IP都变,那分配弹性IP确实有用,用户访问的地址就能固定下来。但它没法直接让你的Rails应用自动持续运行,这是两个完全不同的问题。

核心方案:用进程管理工具让Rails后台持续跑

你现在手动rails s启动的进程,只要SSH连接断了(比如关终端、超时掉线),进程就跟着终止了。所以必须用专门的进程管理工具,把Rails进程挂在后台,就算SSH断了也能继续跑,还能在意外崩溃时自动重启。推荐用systemd(EC2用的Amazon Linux、Ubuntu这些主流系统都支持),步骤如下:

  1. 创建systemd服务配置文件
    登录EC2后,创建一个服务文件,比如/etc/systemd/system/rails-app.service,把下面的内容贴进去,记得替换成你自己的项目路径和Ruby/Rails路径:

    [Unit]
    Description=我的Rails应用服务
    After=network.target  # 等网络就绪再启动
    
    [Service]
    User=ec2-user  # 用你的EC2用户名,一般是ec2-user或ubuntu
    WorkingDirectory=/home/ec2-user/your-rails-project  # 替换成你的Rails项目根目录
    ExecStart=/home/ec2-user/.rbenv/shims/rails s -p 3000 -b 0.0.0.0  # 替换成你的Ruby二进制路径和端口
    Restart=always  # 进程意外终止时自动重启
    RestartSec=5  # 重启间隔5秒
    Environment="RAILS_ENV=production"  # 根据你的环境改,比如development
    
    [Install]
    WantedBy=multi-user.target  # 开机时自动启动
    
  2. 启动并启用服务
    执行这几条命令:

    sudo systemctl daemon-reload  # 让systemd识别新的服务文件
    sudo systemctl start rails-app.service  # 启动服务
    sudo systemctl enable rails-app.service  # 设置开机自启
    
  3. 确认服务状态
    用sudo systemctl status rails-app.service查看,如果显示active (running),就说明成功了。以后不管SSH断连还是实例重启,Rails应用都会自动跑起来。

解决SSH断连的「Broken pipe」问题

这个错误是SSH连接闲置太久,服务器主动断开导致的。可以用两种方法解决:

方法1:修改本地SSH配置(推荐,不用改服务器)

在你自己电脑的~/.ssh/config文件里加一段配置(如果没有这个文件就新建一个):

Host your-ec2-ip-or-domain
  ServerAliveInterval 60  # 每60秒给服务器发一个心跳包
  ServerAliveCountMax 3  # 连续3次没收到回应才断开

方法2:修改EC2的SSH服务器配置

登录EC2后,编辑/etc/ssh/sshd_config,找到下面两个参数并修改:

ClientAliveInterval 60
ClientAliveCountMax 3

然后重启SSH服务:sudo systemctl restart sshd

最后总结一下

  • 弹性IP:有用,但只解决IP固定的问题,不解决应用持续运行。如果你的实例IP经常变,就分配一个;如果IP一直没变,暂时也可以不用。
  • 应用持续运行:必须靠systemd这类工具,这是核心解决方案。
  • SSH断连:通过心跳包配置就能解决「Broken pipe」的问题。

内容的提问来源于stack exchange,提问作者A.A. F

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:45:59