ArchLinux, RVM, Ruby, Rails, Nginx, Passenger and You

没看错,就是ArchLinux,怎么,又回来了?其实我一直未曾离开…… i

好了不矫情了,let’s do business.

[Overview]
本文介绍如何在archlinux上快速搭建rails开发环境,其中有很多可能包括我个人的preferences,各位完全可以根据自行需要取舍。

[ArchLinux]
参照Arch自己的 Official Install Guide ii 安装,其实根本不用参照,整个安装wizard做的已经非常非常user friendly了,我觉得。

[RVM]
RVM 的安装依赖 git 和 curl:

$ sudo pacman -S git curl

装之:

$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

注意没有sudo,符合homebrew的philosophy,尽量不要root,何况我们还是作为development环境,rvm官网好像现在已经没有倾向性了,不过我印象中以前也是倾向于装在user的home目录。

同样是非常友好的安装过程,参照提示,在.bash_profile或者.bashrc的最后添加一行 Load 代码(如果你用的是bash的话):

$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc

我还喜欢shell补全,如果你也喜欢,再加上一句即可:

$ echo '[[ -r $rvm_path/scripts/completion ]] && . $rvm_path/scripts/completion' >> ~/.bashrc

最后查看一下notes,看看所在平台有什么注意事项:

$ rvm notes

[Ruby]
这里我们用rvm安装ruby,如果你喜欢也可以pacman -S之,我查了下,arch repo里的ruby是1.9.2,patch level也是最新的180,不过rvm的好处是可以安装好几个ruby版本,且能够非常方便的帮你维护不同的gemset,非常像python里面的virtualenv.

安装最新的ruby 1.9.2:

$ rvm install 1.9.2

如果需要也可以装上1.8.7的:

$ rvm install 1.8.7

下载编译安装完后我们就可以使用了,我喜欢把ruby 1.9.2,gemset rails3作为我的default:

$ rvm use 1.9.2@rails3 --create --default

verify一下我们是否还是 so far so good:

$ which ruby
/home/samson/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]

[Rails]
安装rails 3,最新的是3.0.5:

$ gem install rails
$ which rails
/home/samson/.rvm/gems/ruby-1.9.2-p180@rails3/bin/rails
$ rails -v
Rails 3.0.5

创建一个project做demo:

$ rails new demo

bundle一下,确保所有依赖的gem都已安装,这里会把sqlite3给补上:

$ cd demo
$ bundle

又一个milestone,测试一下:

$ rails s

[Nginx & Passenger]
不用apache,让我们换nginx玩玩;由于passenger的nginx模块安装的时候需要重新编译nginx,所以 pacman -S nginx 似乎是没有意义的,我们这里先skip掉,先安装passenger,然后在编译安装passenger的nginx模块的时候把nginx一并搞定。

安装passenger:

$ gem install passenger

安装passenger的nginx模块,同时安装nginx,默认的nginx安装地址是/opt/nginx(可以修改到不需要root的地址),需要root,我们可以用rvmsudo搞定:

$ rvmsudo passenger-install-nginx-module

again,友好至极,装完连配置文件都帮你改好了,不过检查一下总不会错:

$ grep "passenger" nginx.conf
    passenger_root /home/samson/.rvm/gems/ruby-1.9.2-p180@rails3/gems/passenger-3.0.5;
    passenger_ruby /home/samson/.rvm/wrappers/ruby-1.9.2-p180@rails3/ruby;

配置一下,来跑一下之前创建的demo project:

server {¬
  listen 80
  server_name demo.local;¬
  root /home/samson/code/demo/public;¬
  passenger_enabled on;¬
  rails_env development;¬
}¬
$ sudo /opt/nginx/sbin/nginx

我取的server name时demo.local,所以在hosts里面加上这条entry后,我们就可以用browser访问 http://demo.local 了.

如果遇到403 forbidden,在nginx.conf里面改下user即可:

user samson users;

reload, welcome aboard!

$ sudo /opt/nginx/sbin/nginx -s reload
[Footnotes]
  1. 我有一个arch的liveusb,各种机子上一直保存着至少2+个arch的vm,虽然后来由于太占空间被转移到了移动硬盘,可就是一直舍不得删 []
  2. 最近老是official, official的… 你懂的 []

历史上的今天:

Related posts:

3 Comments on "ArchLinux, RVM, Ruby, Rails, Nginx, Passenger and You"

  1. soquick China Mozilla Firefox FreeBSD says:

    俺要是早有移动盘,什么片什么镜象就都还在啊,有木有!!

Trackbacks for this post

  1. RVM方式安装rails环境 United States WordPress Unknow Os

Got something to say? Go for it!

使用新浪微博登陆