Ruby开发环境搭建与应用管理全解析
立即解锁
发布时间: 2025-08-20 02:35:32 阅读量: 3 订阅数: 3 

# Ruby开发环境搭建与应用管理全解析
## 1. 多版本Ruby运行环境搭建
在开发过程中,有时我们需要同时运行多个不同版本的Ruby应用。以一个已设置好端口转发的第二个应用为例,我们可以在浏览器新标签页中打开 `http://localhost:4001/games`,就能看到Ruby 1.8.7应用正常运行。创建几个游戏,感受多版本Ruby的强大功能。
### 1.1 系统级RVM安装
当一台机器上有多个用户需要使用RVM时,就需要进行系统级RVM安装。以下是具体步骤:
1. 创建新的虚拟机:
```bash
$ mkdir ~/deployingrails/vagrant_rvm2 && cd ~/deployingrails/vagrant_rvm2/
$ vagrant init lucid64
$ vagrant up
$ vagrant ssh
```
2. 安装开发包并卸载系统Ruby:
```bash
vm $ sudo apt-get update -y
vm $ sudo apt-get install build-essential zlib1g-dev libssl-dev libreadline-dev \
git-core curl libcurl4-dev libsqlite3-dev bison -y
vm $ sudo rm -rf /opt/vagrant_ruby
```
3. 安装RVM:
```bash
vm $ curl -L get.rvm.io | sudo bash -s stable
```
4. 创建新用户并添加到rvm组:
```bash
vm $ sudo useradd --create-home --shell /bin/bash hobo
vm $ sudo usermod --append --groups rvm vagrant
vm $ sudo usermod --append --groups rvm hobo
```
5. 退出并重新登录虚拟机,安装Ruby解释器:
```bash
vm $ exit
$ vagrant ssh
vm $ rvm install 1.9.3
```
### 1.2 用户间Ruby解释器共享验证
我们可以验证不同用户是否能共享和使用已安装的Ruby解释器:
1. 切换到hobo用户,查看可用的Ruby解释器:
```bash
vm $ sudo su -l hobo
vm $ rvm list
vm $ rvm use 1.9.3
vm $ ruby -v
```
2. 以hobo用户安装另一个Ruby解释器(Rubinius):
```bash
vm $ rvm install rbx
vm $ rvm use rbx
vm $ ruby -v
```
3. 切换回vagrant用户,验证Rubinius是否可用:
```bash
vm $ exit
vm $ rvm list
vm $ rvm use rbx
vm $ ruby -v
```
### 1.3 应用部署与端口转发
在安装好多个Ruby解释器后,设置新应用在Passenger Standalone下运行的步骤与之前类似:添加 `.rvmrc`,安装适当的gem,启动Passenger Standalone,进行端口转发等。而且,由于Unix文件系统权限的隔离,用户之间不会相互干扰。
### 1.4 系统级RVM安装流程
```mermaid
graph LR
A[创建新虚拟机] --> B[安装开发包并卸载系统Ruby]
B --> C[安装RVM]
C --> D[创建新用户并添加到rvm组]
D --> E[退出并重新登录虚拟机,安装Ruby解释器]
E --> F[验证用户间Ruby解释器共享]
F --> G[应用部署与端口转发]
```
## 2. 监控Passenger Standalone
Passenger Standalone是一款稳定的软件,但为了以防万一,我们可以使用Monit来监控它,并在其崩溃时自动重启。
### 2.1 安装Monit
```bash
vm $ sudo apt-get install monit -y
```
### 2.2 配置Monit监控Passenger Standalone
1. 生成RVM包装脚本:
```bash
vm $ cd app193/
vm $ rvm wrapper 1.9.3 app193 passenger
```
2. 创建Monit配置文件 `/etc/monit/conf.d/passenger_standalone`:
```plaintext
check process passenger_standalone
with pidfile /home/vagrant/app193/tmp/pids/passenger.3000.pid
start program = "/bin/su - vagrant -c \
'/home/vagrant/.rvm/bin/app193_passenger start \
--daemonize --pid-file \
/home/vagrant/app193/tmp/pids/passenger.3000.pid'"
with timeout 5 seconds
stop program = "/bin/su - vagrant -c \
'/home/vagrant/.rvm/bin/app193_passenger stop \
--pid-file \
/home/vagrant/app193/tmp/pids/passenger.3000.pid'" with timeout 5 seconds
if cpu > 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if totalmem > 400.0 MB for 5 cycles then restart
```
3. 更新Monit主配置文件:
```bash
vm $ sudo sh -c "echo 'include /etc/monit/conf.d/*' >> /etc/monit/monitrc"
```
4. 修改Monit启动配置:
编辑 `/etc/default/monit`,将 `startup` 从 `0` 改为 `1`。
### 2.3 启动Monit和Passenger Standalone
```bash
vm $ sudo monit start passenger_standalone
vm $ sudo monit
```
### 2.4 Monit监控配置步骤
| 步骤 | 操作 |
| ---- | ---- |
| 1 | 安装Monit |
| 2 | 生成RVM包装脚本 |
| 3 | 创建Monit配置文件 |
| 4 | 更新Monit主配置文件 |
| 5 | 修改Monit启动配置 |
| 6 | 启动Monit和Passenger Standalone |
## 3. Gemsets与Bundler对比
RVM不仅可以管理多个Ruby解释器,还提供了gemsets功能来管理应用的gem资源。gemsets允许应用将自己的gem安装到专用目录,避免版本冲突
0
0
复制全文


