你是不是也写过几个漂亮的 Ruby on Rails 项目,本地跑得飞起,但一想到要上线就头大?别担心,今天我就带你一步步在阿里云的轻量服务器上把你的 Rails 应用稳稳当当地部署上线。整个过程不会用一堆高深术语把你绕晕,咱们就像朋友聊天一样,一步一步来,保证你照着做就能成功。

为什么选阿里云轻量服务器?
咱们得说说为啥不直接买个ECS或者上别的云平台。其实阿里云的轻量服务器(LightHouse)特别适合刚入门、想快速上线小项目的开发者。它不像传统ECS那样需要自己从零配置网络、安全组、镜像这些,轻量服务器预装了常见环境,比如 WordPress、LAMP,甚至还有 Node.js 和 Docker 的模板,开箱即用,省心不少。
而且价格是真的香!新用户经常有首月几块钱甚至免费的活动,性能对于个人博客、小工具类 Rails 应用完全够用。CPU、内存、带宽都够日常使用,关键是管理后台简洁明了,连我那个不太懂技术的朋友都能自己重启服务器了。
准备工作:先把东西准备好
在开始之前,你需要准备几样东西:
- 一个阿里云账号:如果没有,去官网注册一个就行,手机号+身份证实名认证一下,几分钟搞定。
- 一个域名(可选但推荐):如果你希望别人通过网址访问,比如
mycoolapp.com,那就得买个域名并备案。如果只是测试,可以直接用公网IP访问。 - 你的 Rails 项目代码:确保代码能正常运行,
rails s能启动,数据库迁移也 OK。 - 基本的 Linux 命令行操作能力:别怕,不是让你当运维专家,会
cd、ls、vim这些基础命令就够了。
对了,提醒一句——现在上阿里云买服务器,经常能领优惠券,能省一点是一点嘛。我每次都会先去领一张阿里云优惠券,尤其是新用户,折扣力度大,买轻量服务器能便宜好几十。别白扔钱,该薅的羊毛必须薅!
第一步:购买并登录轻量服务器
登录阿里云控制台,搜索“轻量应用服务器”或者直接在产品里找到它。点击“创建实例”,选择你喜欢的地域(建议选离你目标用户近的,比如华南选广州,华东选上海)。
镜像这里,我建议选“Ubuntu 20.04 或 22.04 基础镜像”,干净清爽,自己装环境更可控。当然你也可以选带 Docker 的,但今天我们走传统路线。
实例规格选最低配的就行,1核2G够用了。系统盘默认 50GB,够你折腾一阵子。然后设置登录方式,推荐用“密钥对”,更安全。如果你不太会弄密钥,也可以选密码登录,后面再改。
买完之后,在实例列表里能看到你的服务器,记住公网 IP 地址。然后用 SSH 登录进去:
ssh root@你的公网IP
如果是密码登录,就直接输密码;密钥登录的话,记得加 -i 参数指定私钥文件。
第二步:配置服务器环境
登录成功后,第一件事就是更新系统:
sudo apt update && sudo apt upgrade -y
接下来装我们需要的工具:
安装 Ruby
Rails 跑得动,Ruby 是老大。推荐用 rbenv 来管理 Ruby 版本,比 RVM 轻量,也不容易出问题。
sudo apt install -y git curl libssl-dev libreadline-dev zlib1g-dev build-essential
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
然后把 rbenv 加到 shell 配置里:
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
现在可以装 Ruby 了,比如你想装 3.1.2:
rbenv install 3.1.2
rbenv global 3.1.2
ruby -v # 看看是不是显示对了
安装 Node.js 和 Yarn
Rails 现在前端依赖 Node,所以也得装上:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs
npm install -g yarn
安装 PostgreSQL(可选)
如果你的 Rails 项目用的是 PostgreSQL,那还得装数据库:
sudo apt install -y postgresql postgresql-contrib libpq-dev
sudo -u postgres createuser --superuser $USER
sudo -u postgres createdb $USER
这样你就有了自己的数据库用户和默认数据库,Rails 里不用额外配密码也能连。
第三步:上传并配置 Rails 项目
现在环境齐了,该把代码传上去了。你可以用 Git,也可以用 scp 命令传压缩包。我习惯先在服务器上克隆 GitHub 项目:
git clone https://github.com/你的用户名/你的rails项目.git
cd 你的rails项目
然后装 Gem:
gem install bundler
bundle install --without development test
注意加 --without development test,服务器不需要开发和测试用的 gem,省时间省空间。
配置数据库和 secrets
编辑 config/database.yml,生产环境用 PostgreSQL:
production:
adapter: postgresql
database: your_app_production
username: your_username
password:
host: localhost
如果你没设密码,可以先留空或者直接删掉 password 行。
然后生成生产环境密钥:
bin/rails credentials:edit --environment production
第一次会提示你输入 master key,随便记下来,以后部署都要用。你可以在本地 config/credentials/production.key 找到它,传到服务器的环境变量里,比如:
export RAILS_MASTER_KEY=你那一长串key
最好写进 ~/.bashrc,不然重启后就没了。
第四步:预编译资产并迁移数据库
Rails 的 CSS、JS 要预编译才能被 Web 服务器正确加载:
RAILS_ENV=production bin/rails assets:precompile
然后跑数据库迁移:
RAILS_ENV=production bin/rails db:migrate
这一步如果报错,大概率是数据库没启动或者权限问题,回头检查 PostgreSQL 服务状态:sudo systemctl status postgresql。
第五步:用 Puma + Nginx 上线应用
本地用 rails s 可以,但线上得靠更稳定的方案。我们用 Puma 当应用服务器,Nginx 当反向代理。
配置 Puma
确保 config/puma.rb 里有生产环境配置:
environment "production"
workers 2
threads_count = 5
threads threads_count, threads_count
bind "unix:///home/ubuntu/your-app/shared/tmp/sockets/puma.sock"
daemonize false
pidfile "/home/ubuntu/your-app/shared/tmp/pids/puma.pid"
state_path "/home/ubuntu/your-app/shared/tmp/sockets/puma.state"
stdout_redirect "/home/ubuntu/your-app/shared/log/puma_access.log", "/home/ubuntu/your-app/shared/log/puma_error.log", true
然后创建对应目录:
mkdir -p shared/tmp/sockets shared/tmp/pids log
安装并配置 Nginx
sudo apt install -y nginx
编辑 Nginx 配置:
sudo vim /etc/nginx/sites-available/rails-app
内容如下:
upstream app {
server unix:///home/ubuntu/your-app/shared/tmp/sockets/puma.sock fail_timeout=0;
}
server {
listen 80;
server_name your-domain-or-ip;
root /home/ubuntu/your-app/public;
try_files $uri/index.html $uri @app;
location @app {
proxy_pass http://app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
client_max_body_size 10M;
}
然后启用这个配置:
sudo ln -s /etc/nginx/sites-available/rails-app /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default # 删除默认站点
sudo nginx -t # 测试配置是否正确
sudo systemctl restart nginx
第六步:启动 Puma,大功告成!
最后一步,启动 Puma:
RAILS_ENV=production bundle exec puma -C config/puma.rb
打开浏览器,输入你的公网 IP 或域名,看到熟悉的 Rails 欢迎页或你的首页,恭喜你,部署成功了!
为了让 Puma 开机自启,你可以用 systemd 写个服务脚本,或者用 screen 挂后台。简单点就用:
screen -S rails
# 然后在里面执行 puma 启动命令
# 按 Ctrl+A, 再按 D 脱离 screen
后续维护小贴士
- 定期备份数据库:可以用
pg_dump定时导出,存到别的地方。 - 监控日志:出问题先看
log/production.log和 Nginx 的 error log。 - 安全组规则:只开放 80 和 22 端口,其他关掉,防止被扫。
- 域名绑定:买了域名就去解析到你的公网 IP,还能申请免费 SSL 证书让网站变“https”。
结语:动手才是王道
你看,部署 Rails 应用真没那么可怕。阿里云轻量服务器降低了新手门槛,配合简单的流程,几分钟就能把项目亮出来给朋友看。别总想着“等我学会了再上”,现在就可以试一次,哪怕失败了也没关系,多试几次就熟了。
记住,每一个老司机都是从熄火开始的。你现在点开阿里云,买个轻量服务器,照着这篇文章走一遍,明天你就是朋友圈里最靓的崽。
哦对了,别忘了领券省钱:阿里云优惠券,冲!。
内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。
本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/149844.html