很多开发者想要在服务器上部署Ruby全栈动态网站,却不知道怎么结合宝塔面板完成环境搭建和持久运行。下面我们就一步步讲解完整的操作流程。

前期准备
首先你需要有一台已经安装好宝塔面板的Linux服务器,系统推荐选择CentOS 7及以上版本,确保服务器有公网IP,并且已经开放了80、443等常用端口。
安装RVM管理Ruby版本
RVM是Ruby的版本管理工具,能帮我们快速安装和切换不同版本的Ruby,避免环境冲突。首先通过命令行执行以下操作:
# 安装RVM依赖包 yum install -y curl gpg gcc make patch autoconf automake bison libffi-devel libtool patch readline-devel sqlite-devel zlib-devel openssl-devel libyaml-devel # 导入RVM公钥 gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 # 安装RVM curl -sSL https://get.rvm.io | bash -s stable # 加载RVM环境 source /etc/profile.d/rvm.sh # 查看可安装的Ruby版本 rvm list known # 安装指定版本的Ruby,这里以3.2.2为例 rvm install 3.2.2 # 设置默认Ruby版本 rvm use 3.2.2 --default # 验证Ruby安装成功 ruby -v
安装Ruby全栈项目依赖
安装好Ruby之后,需要安装Bundler来管理项目依赖,同时安装Rails框架(如果是Rails项目的话):
# 安装Bundler gem install bundler # 安装Rails,按需选择版本 gem install rails # 验证Rails安装成功 rails -v
接下来把你的Ruby全栈项目上传到服务器的指定目录,比如/www/wwwroot/ruby_demo,进入项目目录执行bundle install安装项目所需的依赖包。
配置项目持久运行
为了让Ruby应用能够持久运行,不会因为终端关闭就停止,我们可以使用Systemd来管理服务。首先创建服务配置文件:
# 创建服务文件 vim /etc/systemd/system/ruby_demo.service
在文件中写入以下内容,注意替换成你自己的项目路径和启动命令:
[Unit] Description=Ruby Demo Application After=network.target [Service] Type=simple User=root WorkingDirectory=/www/wwwroot/ruby_demo ExecStart=/usr/local/rvm/gems/ruby-3.2.2/wrappers/ruby /www/wwwroot/ruby_demo/bin/rails server -p 3000 -b 0.0.0.0 Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
保存之后执行以下命令启动服务并设置开机自启:
# 重新加载Systemd配置 systemctl daemon-reload # 启动服务 systemctl start ruby_demo # 设置开机自启 systemctl enable ruby_demo # 查看服务运行状态 systemctl status ruby_demo
配置Nginx反代端口
现在Ruby应用已经在3000端口运行了,我们需要在宝塔面板中配置Nginx反代,让用户可以通过域名或者服务器IP访问网站。
打开宝塔面板,进入软件商店安装Nginx,安装完成后点击网站,添加站点,填写你的域名或者服务器IP,根目录可以随便填,因为我们会用反代。
添加完成之后,点击站点的设置,选择反向代理,点击添加反向代理,填写以下信息:
- 代理名称:ruby_demo
- 目标URL:http://127.0.0.1:3000
- 发送域名:$host
保存之后,Nginx就会把访问你站点的请求转发到3000端口的Ruby应用上。如果需要配置SSL证书,可以在宝塔面板的站点设置中选择SSL,申请免费的Let's Encrypt证书即可。
常见问题排查
如果访问网站出现502错误,可以先检查Ruby服务是否正常运行,执行systemctl status ruby_demo查看状态,再检查Nginx反代配置是否正确,端口是否对应。如果Ruby依赖安装失败,可以检查是否安装了对应的开发包,或者切换RubyGems的镜像源为国内源:
# 替换RubyGems镜像源为国内源 gem sources --add https://gems.ipipp.com/ --remove https://rubygems.org/ # 查看当前镜像源 gem sources -l
这样整个Ruby全栈动态网站的部署和持久运行配置就完成了,你可以通过配置的域名或者IP访问你的网站。