奋斗
努力

使用京东云服务器时,如何快速搭建Ruby on Rails环境?

云计算

在京东云服务器(JingDong Cloud ECS)上快速搭建 Ruby on Rails 环境,推荐采用 RVM + Bundler + Nginx + Puma/Passenger 的组合方案。以下是基于 Ubuntu 22.04 LTS 的快速部署步骤(其他发行版类似):


✅ 一、基础准备

  1. 登录服务器

    ssh root@your-jd-ecs-ip
  2. 更新系统 & 安装依赖

    sudo apt update && sudo apt upgrade -y
    sudo apt install -y curl git build-essential libssl-dev libreadline-dev zlib1g-dev libyaml-dev 
       nginx puma libpq-dev imagemagick libvips-dev redis-server

✅ 二、安装 RVM(Ruby Version Manager)

# 导入 GPG 密钥并安装脚本
curl -sSL https://rvm.io/mpapis.asc | gpg --dearmor -o /usr/share/keyrings/rvm.gpg
echo "deb [signed-by=/usr/share/keyrings/rvm.gpg] https://get.rvm.io/ubuntu stable main" | 
  sudo tee /etc/apt/sources.list.d/rvm.list

sudo apt update
sudo apt install -y rvm ruby-rvm

# 重新加载 shell 配置(或重启终端)
source ~/.rvm/scripts/rvm

# 安装最新稳定版 Ruby(如 3.3.x)
rvm install 3.3 --default
rvm use 3.3 --default
ruby -v  # 验证版本
gem -v   # 确认 gem 版本

💡 提示:若网络慢,可换用国内镜像源(见文末优化建议)。


✅ 三、创建 Rails 项目

# 安装 Rails(首次需时间编译 native extensions)
gem install rails -v 7.1.3  # 替换为你需要的版本

rails new my_rails_app --database=postgresql --css=tailwind --skip-test
cd my_rails_app

# 初始化数据库(假设已配好 PostgreSQL)
sudo -u postgres createuser -s rails_user
sudo -u postgres createdb rails_dev
sudo -u postgres createdb rails_test

bundle exec rails db:migrate

✅ 四、启动应用(开发模式演示)

# 启动 Puma(生产推荐 Puma + systemd 或 Docker)
bundle exec puma -C config/puma.rb
# 默认监听 http://0.0.0.0:3000

✅ 浏览器访问 http://your-jd-ecs-ip:3000 即可看到首页。


✅ 五、生产环境加固(关键!)

1. 配置 Nginx 反向X_X

# /etc/nginx/sites-available/myapp
server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

启用站点:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx

2. 使用 systemd 管理 Puma(自动开机启动)

创建 /etc/systemd/system/puma.service:

[Unit]
Description=Puma for my_rails_app
After=network.target

[Service]
Type=simple
User=rails_user
WorkingDirectory=/home/rails_user/my_rails_app
ExecStart=/home/rails_user/.rvm/bin/rvm 3.3 do bundle exec puma -C config/puma.rb
Restart=always
Environment=RAILS_ENV=production
Environment=SECRET_KEY_BASE=your-secret-key-here

[Install]
WantedBy=multi-user.target

启动服务:

sudo systemctl daemon-reload
sudo systemctl enable puma
sudo systemctl start puma

🔧 优化建议(提速安装 & 提升性能)

问题 解决方案
Ruby/gem 安装慢 设置 gem 源:
gem sources --remove https://rubygems.org/
gem sources -a https://mirrors.aliyun.com/rubygems/
编译 native extension 超时 安装 libvips-dev 后确保 ImageMagick 权限正确;必要时用 Docker 预构建镜像
内存不足 添加 swap:sudo fallocate -l 2G /swapfile && chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile
安全加固 禁用 SSH root 登录、配置防火墙(京东云控制台+iptables)、启用 Fail2Ban

🚀 更快捷方案:使用 Docker(适合容器化部署)

若偏好隔离环境,可用官方 Rails 镜像:

docker run -d --name rails-app 
  -p 3000:3000 
  -e RAILS_ENV=production 
  -e SECRET_KEY_BASE=$(openssl rand -hex 64) 
  ruby:3.3-slim-bullseye 
  sh -c "rails new . --database=postgresql --skip-test && 
         bundle exec rails server -b 0.0.0.0"

⚠️ 注意:持久化数据需挂载卷(-v $(pwd)/data:/app/data),DB 需单独容器运行。


需要我提供:

  • 一键部署脚本(含日志轮转、监控告警)?
  • PostgreSQL + Redis 高可用架构示例?
  • 京东云专属安全组规则配置指南?

欢迎告诉我你的具体需求场景(如:个人博客 / 企业 SaaS / MVP 验证),我可进一步定制方案。

未经允许不得转载:云服务器 » 使用京东云服务器时,如何快速搭建Ruby on Rails环境?