把 Ruby 应用真正跑到线上,难点通常不在“能不能启动”,而在于该选哪类平台、部署步骤先后是什么,以及上线后怎么继续管理。下面按 AWS、Heroku 和 Google Cloud Platform 三条常见路线展开,保留关键命令与配置节点,帮助你根据项目体量、控制需求和上手成本做出判断。
先决定平台:看控制权、上手成本和覆盖范围
在开始部署前,先明确你的目标:是要更细的环境控制,还是希望尽快上线;是自己管理服务器,还是尽量交给平台托管。对 Ruby 应用来说,下面三类平台最常见:

- AWS (Amazon Web Services):服务种类多,可定制空间大,适合希望掌握服务器、网络和运行环境的项目。
- Heroku:部署流程相对简单,适合小型项目、原型验证,或者希望快速完成第一次上线的团队。
- Google Cloud Platform (GCP):计算与托管服务完整,适合希望借助托管能力并兼顾全球访问能力的场景。
如果你需要自己决定系统环境、安装方式和运行细节,AWS 会更合适;如果重点是减少运维动作,Heroku 和 GCP 的托管式路径会更轻便。
使用 AWS 部署 Ruby 应用
先创建可用的 EC2 实例
在 AWS 上部署,通常从 EC2 开始。核心思路是先准备一台能联网、能安装 Ruby、并放行 Web 流量的 Linux 主机。

- 登录 AWS 管理控制台。
- 进入 EC2 控制台并点击“启动实例”。
- 选择 Amazon Linux 作为操作系统。原文采用这个方案,原因是它免费且与 Ruby 及常见工具兼容性较好。
- 按应用规模配置实例大小和网络设置。
- 设置安全组规则,允许 HTTP/HTTPS 流量。
- 启动实例并连接到实例。
在 EC2 上安装 Ruby 运行环境
连接到实例后,先更新系统,再安装编译 Ruby 所需依赖,最后手动下载并安装 Ruby 3.0.0。这个过程更偏传统服务器部署,适合需要明确掌控版本与构建过程的场景。

sudo yum update -y
sudo yum install -y gcc glibc-devel make openssl-devel libyaml-devel zlib-devel readline-devel sqlite3-devel
cd /usr/src
sudo wget http://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.0.tar.gz
sudo tar xvf ruby-3.0.0.tar.gz
cd ruby-3.0.0
sudo ./configure
sudo make
sudo make install
这里的关键点有两个:一是依赖包必须先装齐,否则 Ruby 编译阶段容易出错;二是文中使用的是源码安装方式,因此后续升级、维护和环境一致性需要你自己负责。
把 Rails 应用部署到实例上
Ruby 环境准备好后,就进入应用层部署:拉代码、装依赖、配数据库、跑迁移,再把服务跑起来。
- 克隆 Git 仓库到 EC2 实例:
git clone <你的 Git 仓库地址>
- 安装 Bundler 和项目依赖:
gem install bundler
bundle install --path vendor/bundle
- 设置数据库配置:
cp config/database.yml.example config/database.yml
# 编辑 config/database.yml 文件以匹配你的数据库配置
- 运行数据库初始化与迁移:
rails db:create db:migrate
- 启动 Rails 服务:
rails server -b 0.0.0.0
其中,rails server -b 0.0.0.0 的作用是让服务监听外部可访问地址,而不只绑定本机。对首次部署来说,这是一条经常被忽略但很关键的命令。
使用 Heroku 部署 Ruby 应用
先完成账号和命令行环境准备
Heroku 的优势在于流程短,适合把注意力放在代码本身,而不是服务器维护。开始前,你只需要完成账号注册并准备好 CLI。
- 访问 Heroku 官网注册账号。
- 安装 Heroku CLI 并登录:
heroku login
通过 Git 直接发布应用
Heroku 的常见部署方式是把应用作为 Git 仓库推送到平台。对已有 Ruby 或 Rails 项目来说,这条路径通常比自建服务器更直接。
- 如果项目还没有 Git 仓库,先初始化:
git init
- 创建 Heroku 应用并添加远程仓库:
heroku create
- 推送代码到 Heroku:
git push heroku master
- 如有需要,设置环境变量:
heroku config:set SECRET_KEY_BASE=<你的密钥>
对 Rails 项目来说,像 SECRET_KEY_BASE 这类配置不建议直接写进仓库,交给平台环境变量管理会更稳妥。
上线后的基本管理命令
Heroku 部署完成后,常用的不是再进服务器,而是直接通过 CLI 做访问、排障和资源调整。
heroku open
heroku logs --tail
heroku ps:scale web=1
heroku open 用于快速打开应用,heroku logs --tail 适合实时看运行日志,而 heroku ps:scale web=1 则体现了平台托管的便利:你可以直接调整 Web 进程规模,而不必手动改服务器进程。
使用 Google Cloud Platform 部署 Ruby 应用
先准备 GCP 项目和结算
在 GCP 上部署前,需要先有可用账户,并完成项目与结算设置。这个前置步骤虽然简单,但属于 App Engine 发布前不可跳过的基础条件。
- 访问 Google Cloud Platform 官网注册账户。
- 设置项目并启用结算功能。
用 App Engine 发布 Ruby 应用
如果你不想长期维护底层服务器,App Engine 是更偏托管化的一条路线。文中的流程以 Google Cloud SDK 为入口,完成初始化、创建应用和部署。
- 安装 Google Cloud SDK 并初始化:
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
gcloud init
- 创建新的 App Engine 应用:
gcloud app create --project=<你的项目 ID>
- 部署应用:
gcloud app deploy
- 设置环境变量:
gcloud app variables set SECRET_KEY_BASE=<你的密钥>
和 Heroku 类似,GCP 这一路线也强调把敏感配置放到平台层管理。这样做的好处是应用代码与运行时配置分离,后续切换环境时更容易维护。
三种部署方式怎么选
如果从运维参与度来看,这三条路线的差异很清晰:
- AWS EC2:你拥有更多控制权,也要承担更多安装、维护和排障工作。
- Heroku:流程最直接,适合想快速完成上线、验证功能或减少服务器管理负担的项目。
- GCP App Engine:介于灵活性与托管便利之间,更适合希望借助平台能力完成部署的应用。
如果你的重点是“自己掌控环境”,优先看 AWS;如果重点是“尽快发布并持续管理简单”,Heroku 更省力;如果你更看重托管部署和平台化能力,可以考虑 GCP。无论选择哪条路径,核心部署顺序其实都一致:准备运行环境、发布代码、配置数据库与环境变量、完成上线后的验证和管理。













