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

pinewong · 发布于 2016年3月04日 · 最后由 pinewong 回复于 2016年3月08日 · 1563 次阅读
24405

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

步骤一:安装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”的其他方法,重新解决宿主机和虚拟机的互连问题!

共收到 12 条回复
3790
qinfanpeng · #1 · 2016年3月04日

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

4898
springwq · #2 · 2016年3月04日 1 个赞

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

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

23338
fighterleslie · #3 · 2016年3月04日 2 个赞

#2楼 @springwq

To quote 12-factor:

Keep development, staging, and production as similar as possible

24405
pinewong · #4 · 2016年3月04日

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

24405
pinewong · #5 · 2016年3月04日

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

15999
embbnux · #6 · 2016年3月04日

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

7楼 已删除
24405
pinewong · #8 · 2016年3月05日

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

861
alphaliu · #9 · 2016年3月05日

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

667
xiaogui · #10 · 2016年3月07日 2 个赞

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

96
matsuijurina · #11 · 2016年3月07日

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

24405
pinewong · #12 · 2016年3月08日

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

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