部署 Fire Up! Vagrant/VPS 上快速部署 ruby/rails 环境.

Saito · 2012年07月24日 · 最后由 Saito 回复于 2012年10月12日 · 7864 次阅读

快速部署 ruby/rails 环境,包含 rvm, ruby, mysql, nginx, unicorn.

Fire Up!

https://github.com/SaitoWu/fireup

Fire up 本地 vagrant 测试部署一台 ubuntu 12.04 precise 耗时 699 秒,最主要的时间耗费在下载 ruby 源码与编译上面。如果这里能提速的话,1 分钟应该没问题。

Fire Up 最好的使用方式是 Fork, 因为每个人/公司的部署方式各不不同,不可能整出大一统的解决方案,Fire Up 本身只提供最基础的 Rails 应用部署 ( ruby, unicorn, mysql, nginx ). 类似 redis, mongodb, memcached 可以 Fork 后自行添加。

update

因为之前是在 vagant box 上进行测试,vagrant box 默认有一个 post_install.sh 的脚本,运行后可以预备环境。我把 vagrant 的脚本裁减了一下 steal 到 install.sh 里面。所以已经不需要 #4 楼 @huacnlee 的步骤了.. 系统环境千变万化,欢迎大家 PR, 或者直接提 issue.

立刻在新的虚拟机上面测试了一下,过程还有很多问题

  • Rubygems 环境没有安装
  • Git 没有安装
  • gem install puppet 安装以后还无法直接用 puppet 调用掉,/var/lib/gems/1.8/bin/ 需要加入 PATH 环境变量
  • ./install.sh 直接调用会有权限问题

#1 楼 @huacnlee 我觉得可以把 vagrant 怎么制作 box 的过程加进来。

所有 vagrant 的 box 都是默认支持 puppet 跟 chef 的。把这个搞到 加到 install.sh 上面来就好了。

直接 install.sh 其实没测试过。

这到底是要搞啥,开发环境?

全新的 Ubuntu Server 上面执行,起码需要下面这些动作

sudo apt-get install rubygems1.8 git
git clone git://github.com/SaitoWu/fireup.git
sudo gem install puppet
sudo export PATH=/var/lib/gems/1.8/bin/:$PATH
cd fireup
git submodule update --init
./install.sh

那个 /opt/vagrant_ruby 是 box 里面本来就有吗?

你可以用 VMware Fusion 安装个全新的系统,再做个“快照”,这样可以反复在全新的环境里面测试。

#4 楼 @huacnlee 这么做就没意义了,线上本来就是虚拟机,再套一层就要大打折扣了。vagrant 还是比较适合开发环境进行干净的开发、测试、集成

vagrant 还是有些不方便的地方,主要是 windows 上,本来有了虚拟机就可以屏蔽差别,结果我试了一下好像安装本身也不是很顺利,不知道是不是人品问题

#7 楼 @fsword 我是说开发 Fireup 测试的时候可以用"快照"不断的搞新环境来测试是否能顺利安装

#9 楼 @huacnlee 哦,那是可以的

https://github.com/SaitoWu/fireup/blob/master/install.sh

提交了新的 VPS 单独安装脚本。大家可以测试一下,给个反馈之类的。

这个测试脚本是从 vagrant 里面的 post_install.rb 里面抠出来的。

#3 楼 @bhuztez 部署环境。

什么一键部署之类的。..

#12 楼 @Saito 本地开发,不用搞这么麻烦。线上你又不敢用一键部署。

#13 楼 @bhuztez 那个东西是可以自己配置的,根据自己的需要被配好,用于快速安装多台服务器

#13 楼 @bhuztez 这个不一定,如果要持续交付,自动部署是基本要求

#15 楼 @fsword 我是说,线上一般不允许自己编译个 Ruby 什么的

#16 楼 @bhuztez 恩,是的,所以线上的自动化部署方案会有所不同,一般应该和包管理系统结合,然后用 puppet 或者 chef 来粘合

#17 楼 @fsword 大型公司部署是有点不同。自己的 VPS 随便搞无所谓?

#18 楼 @Saito 追求一切二进制的人只能表示无奈了....

#5 楼 @fsword 嗯。box 在启动完毕之后有个 post_install.sh 的文件,里面安装了 ruby 在 /opt/vagrant_ruby.

#18 楼 @Saito 自己的 vps 一般会有编译环境,但是从安全角度考虑,线上机器最好不要安装编译链

准备添加 memcached, redis 跟 mongodb 的支持。

配置可选。

已经添加了 redis mongodb 跟 postgresql 的支持。

下一步目标是 配置可选。

#23 楼 @Saito 是不是现在的配置不能在 win 下搭建 Vagrant 的环境了?

#24 楼 @ywjno 可以的,最近我把 puppet 换成了 chef. 前两天刚跑过一次。README 有所变化。

#25 楼 @Saito 我大概知道为什么不行了,是不是readme.md里面librarian-chef init应该改成用librarian-chef install?

#26 楼 @ywjno Oh~ 应该是 install.. my fault!.

UPDATE:

嗯。已经修复好了。感谢~

#27 楼 @Saito 这次的 Rails Rumble 会提供一些服务器部署脚本,明天看看长啥样

#28 楼 @yedingding 嗯,好!就等你再布道一下了。

#29 楼 @Saito 我是纯手工酿造,非二进制不用的类型...

#30 楼 @yedingding 你所有都预编译好,然后 scp 进去?

#32 楼 @yedingding 哦。其实主要是一些配置的问题。比如 nginx.conf 文件你怎么配置?

真正上线产品的时候,数据库参数可能需要手动调整。

这个就略麻烦了一点。只是安装的话 Deb 包足够了..

我之前 puppet 版本的是有 nginx unicorn 的配置文件的,现在这个 chef 版的还没加进来。

#34 楼 @yedingding 嗯,还是要用 chef, 我以为你不用。

用一些现成的 cookbook 还是有些好处的,一个是解决了 ubuntu 不同版本 包版本不一致的问题 (这个自己解决的话得自己找三方包), 再一个是他们内部一般都集成了配置文件,在 json 里面配置写一下就好了。

感觉现在用 chef 比原先的 puppet 要好不少,配置一下省心了许多,我已经开始模仿着自己写一个 Vagrantfile 文件出来

#36 楼 @ywjno 嗯,可能是之前 puppet 不会用。其实现在这个 chef 的版本没有以前 puppet 的功能多。少 nginx 跟 mysql 什么的配置文件。不过这个只要找回来加进来就好了。

改天找时间加进来。

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