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

如何将Rails服务器以守护进程启动并实现重启/崩溃后自动重启?

解决Rails守护进程自动重启的问题

嘿,我完全懂你的困扰——用-d参数让WEBrick后台运行确实能解放终端,但它本身压根没自带崩溃自动恢复和开机自启的能力,毕竟WEBrick本质是个轻量开发服务器,没考虑生产环境的持久化需求。不过要实现「后台运行+自动重启+开机自启」,有几个非常靠谱的方案,咱们一步步来:

方案一:用systemd配置系统服务(最推荐,原生支持)

现在绝大多数Linux发行版都用systemd做系统服务管理,它能完美解决你的需求,步骤也不复杂:

  1. 创建systemd服务文件
    用文本编辑器创建一个服务配置文件,比如/etc/systemd/system/rails-production-app.service,把下面的内容填进去,记得替换成你自己的项目信息:

    [Unit]
    Description=我的Rails生产环境应用
    After=network.target  # 确保网络就绪后再启动服务
    
    [Service]
    Type=simple
    User=你的用户名  # 比如deploy或者你的个人用户名,别用root
    WorkingDirectory=/path/to/your/rails/app  # 你的Rails项目根目录
    ExecStart=/usr/local/bin/bundle exec rails server webrick -e production
    Restart=always  # 不管是应用崩溃还是服务器重启,都自动拉起服务
    RestartSec=5  # 崩溃后等待5秒再重启,避免频繁重启
    Environment="RAILS_ENV=production"  # 设置环境变量
    
    [Install]
    WantedBy=multi-user.target  # 开机进入多用户模式时自动启动
    
  2. 启用并启动服务
    执行下面的命令让systemd识别新配置,然后设置开机自启并启动服务:

    sudo systemctl daemon-reload
    sudo systemctl enable rails-production-app.service
    sudo systemctl start rails-production-app.service
    
  3. 查看状态和日志
    想确认服务是否正常运行:

    sudo systemctl status rails-production-app.service
    

    实时查看应用日志:

    journalctl -u rails-production-app.service -f
    

方案二:用进程管理工具(比如supervisord)

如果你的系统没用到systemd,或者更习惯用第三方进程管理工具,supervisord是个不错的选择:

  1. 安装supervisord
    根据你的发行版安装,比如Debian/Ubuntu:

    sudo apt-get install supervisor
    

    CentOS/RHEL:

    sudo yum install supervisor
    
  2. 创建配置文件
    在/etc/supervisor/conf.d/rails-app.conf里添加以下内容:

    [program:rails-app]
    command=/usr/local/bin/bundle exec rails server webrick -e production
    directory=/path/to/your/rails/app
    user=你的用户名
    autostart=true
    autorestart=true
    stdout_logfile=/var/log/rails-app/stdout.log
    stderr_logfile=/var/log/rails-app/stderr.log
    

    记得先创建日志目录:sudo mkdir -p /var/log/rails-app

  3. 重启supervisord并启动服务

    sudo supervisorctl reread
    sudo supervisorctl update
    sudo supervisorctl start rails-app
    

额外提醒:生产环境别用WEBrick!

最后啰嗦一句:WEBrick真的只是给开发用的,性能和稳定性都远不如Puma、Unicorn或者Passenger这些生产级服务器。如果你的应用是正式上线用的,强烈建议换成这些服务器,它们本身就有更完善的守护和重启机制,配合systemd使用会更靠谱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:13:36