部署 Mac OS X 中 brew 搭建 Ruby on Rails 环境

pinewong · 2016年03月04日 · 最后由 pinewong 回复于 2016年03月08日 · 6032 次阅读

本文系统环境:Yosemite 10.10.5。由于系统、软件包等环境各异以及博文会随着时间推移会不再兼容,建议读者在某个步骤出错或者与博文结果相差太大时,读懂每个步骤的重点,多注意各步骤后斜体字内容。如遇到执行命令的权限问题,请在命令前增加 sudo 关键字,输入管理员密码执行。

步骤一:安装 brew 工具

直接执行下面命令:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

以系统能够正常使用 brew -v 命令为成功。

本步骤重点旨在安装工具,如果失败,请到官网 http://brew.sh/ 搜寻最新安装方法。遇到网页打不开或过慢情况,请考虑翻墙事项。

步骤二:使用 brew 安装 virtualbox

直接执行命令:

brew install virtualbox

由于名称 virtualbox 是泛名,如执行失败,请根据提示,修改名称即可。以下是某个具体的例程(就如一开始提到的,由于各方面因素,你的可能不一致,这些不应该影响你操作)

PINE:web mac$ brew install virtualbox

Error: No available formula with the name "virtualbox"

==> Searching for similarly named formulae...

Error: No similarly named formulae found.

==> Searching taps...

These formulae were found in taps:

Caskroom/cask/virtualbox-extension-pack  Caskroom/versions/virtualbox-beta      

Caskroom/cask/virtualbox               

To install one of them, run (for example):

  brew install Caskroom/cask/virtualbox-extension-pack

通过上述提示,你将命令修改为:

brew install Caskroom/cask/virtualbox

在执行,最后以系统能正常使用 virtualbox -v 命令为成功。

步骤二旨在命令行上安装 virtualbox 程序,如果上述方法不成功,请搜寻网上其他方法即可。

步骤三:brew 安装 vagrant

与步骤二一致,先执行以下泛命令,如果出错,跟步骤二一样,修改命令后在执行。最后以正常执行 vagrant -v 命令为成功

brew install vagrant

步骤四:用 vagrant 工具初始化新建一个虚拟机并打开

执行下面两条命令:

vagrant init ubuntu/trusty64;
vagrant up --provider virtualbox

此过程会下载虚拟机 box 文件,所以较慢。如遇网络问题,如上所述,仍是考虑翻墙。

最后以执行 vagrant status 命令后,显示一台正在运行的虚拟机为成功,例如:

PINE:web mac$ vagrant status

Current machine states:

default                   running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to

shut it down forcefully, or you can run `vagrant suspend` to simply

suspend the virtual machine. In either case, to restart it again,

simply run `vagrant up`.

该步骤重点是用 vagrant 工具初始化一个适合 rails 的工作环境(虚拟机),命令中选用的是 Ubuntu 14.04 系统。如你有其他需求,可以在 vagrant 的 box 搜寻仓库 https://atlas.hashicorp.com/boxes/search 中查找,但注意一定要是适合 rails 的,因为这样之后安装环境能减少很多依赖问题。vagrant 命令使用问题,请参照官方文档 https://www.vagrantup.com/docs/

以上是建立好了一个适合 rails 的虚拟机,这个环境以后进行修改后可以重新打包分发给你的同事朋友,这样你们就拥有两份完全一致的系统。下面介绍在新建的 ubuntu 虚拟机环境中搭建出一个能够运行的 rails 环境,并使这个服务器跑起来。




步骤五:在新建的 ubuntu 虚拟机安装 rvm

# 先在命令行连接刚建立的虚拟环境:
vagrant ssh

# 进入虚拟ubuntu环境后执行下列命令安装rvm工具:
curl -L https://get.rvm.io | bash -s stable

安装完后执行 rvm -v 结果没问题即安装正确。

出问题可以参照 rvm 官方文档 http://rvm.io/ 中的操作步骤。

步骤六:用 RVM 安装 Ruby 并设置版本

# 先安装ruby 2.2.3:
rvm insztall 2.2.3

# 接下来设置 Ruby 版本:
rvm 2.2.3 --default

# 测试安装和设置的结果:
ruby -v

如显示结果版本为 2.2.3,代表以上操作正确。

遇到问题,参照 rvm 官方操作 http://rvm.io/

修改 ruby 的 gem 源(此步骤非必需,解决国外服务器访问过慢问题):

gem source -r https://rubygems.org/;

gem source -a https://ruby.taobao.org

步骤七:使用 ruby 的 gem 管理器安装 rails

# 先安装rails需要的bundle包:
gem install bundler

# 设置bundle 使用国内源(此步骤也是必需,和上面一样解决国外服务器访问过慢问题):
bundle config 'mirror.https://rubygems.org' 'https://ruby.taobao.org'

# 安装 rails 环境
gem install rails

最后执行命令 rails -v 测试 rails 环境安装结果。

这里提供 ruby 官方文档地址:http://www.ruby-lang.org/zh_cn/documentation/ ,遇到问题请在此参照官方最新的 rails 安装方法

通过上述,所有工作已经完成,你可以将该辛苦制作的环境打包分发给同事朋友了。如果你还想继续验证 rails 环境的工作,想在宿主机中访问到环境中开启的 Web 服务,就继续往下看:




步骤八:通过 vagrantfile 配置文件设置 virtualbox 的网络,实现宿主机对虚拟机访问

# 退出虚拟机环境:ctrl + d,然后在你的主机中找到vagrantfile并打开编辑,修改下面这行:
config.vm.network "private_network", ip: "192.168.50.4"
# 上面192.168.50.4是为虚拟机设置的ip地址,之后就是通过该地址访问虚拟机的Web服务。

# 让vagrant重新载入配置文件,使网络设置生效:
vagrant reload

# 完成后重新连接虚拟机:
vagrant ssh

进入虚拟机后,执行命令 ifconfig,显示有网卡 ip 为 192.168.50.4(上述设置的 ip)则上述操作生效。

这个步骤的目的是用 vagrant 让宿主机与 virtualbox 虚拟机互连,上面用的只是其中一种方式(私有网络 Private network),还有很多其他方式可以解决这个问题。

步骤九:在虚拟机中新建 rails 项目并开启 Web 服务

# 在虚拟机的命令行下,执行:
rails new demo --no-ri --no-doc

# 其中 --no-ri --no-doc 参数作用是取消下载ri以及doc文档,为项目新建节省时间,这个可以不指定。

# 完成后,进入新建的demo项目目录:
cd demo

# 用上面设置的ip(192.168.50.4)开启Web服务:
rails server -b 192.168.50.4

最后打开宿主机浏览器,访问:http://192.168.50.4:3000,如显示出 rails 欢迎界面,恭喜你,成功了。

如果出问题,你可以返回步骤八,试试颜色标识里提到的除了“私有网络 Private network”的其他方法,重新解决宿主机和虚拟机的互连问题!

不错,建议代码高亮一下,看起来就更漂亮了。

既然是 Mac OS X, 为什么不直接在 Mac 上来搭建 Rails 环境呢?

通过 Vagrant 搭建 的 Linux 环境,还有许多的依赖要装的。

#2 楼 @springwq

To quote 12-factor:

Keep development, staging, and production as similar as possible

#1 楼 @qinfanpeng 谢谢提醒,已经做了一些修改

#2 楼 @springwq @fighterleslie 回答的一样,OS X 环境用来开发,集中用 vagrant 管理比较方便,不是搭建生产环境

既然你都用上了 virtualbox 那我推荐用 docker 配置开发环境,最近刚写了篇博客,可以看看: 使用 docker 快速构建 rails 开发环境

7 楼 已删除

#6 楼 @embbnux 看了,还没用过 Docker。。。谢谢教程,我先消化一下

建议这些教程都贴到 wiki 上,好让初学者可以查询。

个人推荐 GoRails 的《Setup Ruby on Rails》 https://gorails.com/setup

其实用 rails server -b 0.0.0.0 也可以的。

#11 楼 @matsuijurina 嗯,是,而且更简单了!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号