手把手教你用阿里云轻量服务器部署Ruby on Rails应用

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

阿里云轻量服务器部署Ruby on Rails应用

为什么选阿里云轻量服务器?

咱们得说说为啥不直接买个ECS或者上别的云平台。其实阿里云的轻量服务器(LightHouse)特别适合刚入门、想快速上线小项目的开发者。它不像传统ECS那样需要自己从零配置网络、安全组、镜像这些,轻量服务器预装了常见环境,比如 WordPress、LAMP,甚至还有 Node.js 和 Docker 的模板,开箱即用,省心不少。

而且价格是真的香!新用户经常有首月几块钱甚至免费的活动,性能对于个人博客、小工具类 Rails 应用完全够用。CPU、内存、带宽都够日常使用,关键是管理后台简洁明了,连我那个不太懂技术的朋友都能自己重启服务器了。

准备工作:先把东西准备好

在开始之前,你需要准备几样东西:

  • 一个阿里云账号:如果没有,去官网注册一个就行,手机号+身份证实名认证一下,几分钟搞定。
  • 一个域名(可选但推荐):如果你希望别人通过网址访问,比如 mycoolapp.com,那就得买个域名并备案。如果只是测试,可以直接用公网IP访问。
  • 你的 Rails 项目代码:确保代码能正常运行,rails s 能启动,数据库迁移也 OK。
  • 基本的 Linux 命令行操作能力:别怕,不是让你当运维专家,会 cdlsvim 这些基础命令就够了。

对了,提醒一句——现在上阿里云买服务器,经常能领优惠券,能省一点是一点嘛。我每次都会先去领一张阿里云优惠券,尤其是新用户,折扣力度大,买轻量服务器能便宜好几十。别白扔钱,该薅的羊毛必须薅!

第一步:购买并登录轻量服务器

登录阿里云控制台,搜索“轻量应用服务器”或者直接在产品里找到它。点击“创建实例”,选择你喜欢的地域(建议选离你目标用户近的,比如华南选广州,华东选上海)。

镜像这里,我建议选“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

(0)
上一篇 1天前
下一篇 1天前
联系我们
关注微信
关注微信
分享本页
返回顶部