没看错,就是ArchLinux,怎么,又回来了?其实我一直未曾离开…… ((我有一个arch的liveusb,各种机子上一直保存着至少2+个arch的vm,虽然后来由于太占空间被转移到了移动硬盘,可就是一直舍不得删)) 好了不矫情了,let’s do business. [Overview] 本文介绍如何在archlinux上快速搭建rails开发环境,其中有很多可能包括我个人的preferences,各位完全可以根据自行需要取舍。 [ArchLinux] 参照Arch自己的 Official Install Guide ((最近老是official, official的… 你懂的)) 安装,其实根本不用参照,整个安装wizard做的已经非常非常user friendly了,我觉得。 [RVM] RVM 的安装依赖 git 和 curl: [cc lang=”bash”] $ sudo pacman -S git curl [/cc] 装之: [cc lang=”bash”] $ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head ) [/cc] 注意没有sudo,符合homebrew的philosophy,尽量不要root,何况我们还是作为development环境,rvm官网好像现在已经没有倾向性了,不过我印象中以前也是倾向于装在user的home目录。 同样是非常友好的安装过程,参照提示,在.bash_profile或者.bashrc的最后添加一行 Load 代码(如果你用的是bash的话): [cc lang=”bash” nowrap=”false”] $ echo ‘[[ -s “$HOME/.rvm/scripts/rvm” ]] && . “$HOME/.rvm/scripts/rvm”‘ >> ~/.bashrc [/cc] 我还喜欢shell补全,如果你也喜欢,再加上一句即可: [cc lang=”bash” nowrap=”false”] $ echo ‘[[ -r $rvm_path/scripts/completion ]] && . $rvm_path/scripts/completion’ >> ~/.bashrc [/cc] 最后查看一下notes,看看所在平台有什么注意事项: [cc lang=”bash” nowrap=”false”] $ rvm notes [/cc] [Ruby] 这里我们用rvm安装ruby,如果你喜欢也可以pacman -S之,我查了下,arch repo里的ruby是1.9.2,patch level也是最新的180,不过rvm的好处是可以安装好几个ruby版本,且能够非常方便的帮你维护不同的gemset,非常像python里面的virtualenv. 安装最新的ruby 1.9.2: [cc lang=”bash” nowrap=”false”] $ rvm install 1.9.2 [/cc] 如果需要也可以装上1.8.7的: [cc lang=”bash” nowrap=”false”] $ rvm install 1.8.7 [/cc] 下载编译安装完后我们就可以使用了,我喜欢把ruby 1.9.2,gemset rails3作为我的default: [cc lang=”bash” nowrap=”false”] $ rvm use 1.9.2@rails3 –create –default [/cc] verify一下我们是否还是 so far so good: [cc lang=”bash” nowrap=”false”] $ 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] [/cc] [Rails] 安装rails 3,最新的是3.0.5: [cc lang=”bash” nowrap=”false”] $ gem install rails [/cc] [cc lang=”bash” nowrap=”false”] $ which rails /home/samson/.rvm/gems/ruby-1.9.2-p180@rails3/bin/rails $ rails -v Rails 3.0.5 [/cc] 创建一个project做demo: [cc lang=”bash” nowrap=”false”] $ rails new demo [/cc] bundle一下,确保所有依赖的gem都已安装,这里会把sqlite3给补上: [cc lang=”bash” nowrap=”false”] $ cd demo $ bundle [/cc] 又一个milestone,测试一下: [cc lang=”bash” nowrap=”false”] $ rails s [/cc] [Nginx & Passenger] 不用apache,让我们换nginx玩玩;由于passenger的nginx模块安装的时候需要重新编译nginx,所以 pacman -S nginx 似乎是没有意义的,我们这里先skip掉,先安装passenger,然后在编译安装passenger的nginx模块的时候把nginx一并搞定。 安装passenger: [cc lang=”bash” nowrap=”false”] $ gem install passenger [/cc] 安装passenger的nginx模块,同时安装nginx,默认的nginx安装地址是/opt/nginx(可以修改到不需要root的地址),需要root,我们可以用rvmsudo搞定: [cc lang=”bash” nowrap=”false”] $ rvmsudo passenger-install-nginx-module [/cc] again,友好至极,装完连配置文件都帮你改好了,不过检查一下总不会错: [cc lang=”bash” nowrap=”false”] $ 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; [/cc] 配置一下,来跑一下之前创建的demo project: [cc lang=”bash” nowrap=”false”] server {¬ listen 80;¬ server_name demo.local;¬ root /home/samson/code/demo/public;¬ passenger_enabled on;¬ rails_env development;¬ }¬ [/cc] [cc lang=”bash” nowrap=”false”] $ sudo /opt/nginx/sbin/nginx [/cc] 我取的server name时demo.local,所以在hosts里面加上这条entry后,我们就可以用browser访问 http://demo.local 了. 如果遇到403 forbidden,在nginx.conf里面改下user即可: [cc lang=”bash” nowrap=”false”] user samson users; [/cc] reload, welcome aboard! [cc lang=”bash” nowrap=”false”] $ sudo /opt/nginx/sbin/nginx -s reload [/cc]