Ruby、Ruby on Rails、Passenger(mod_rails)


今回はRuby周りのセットアップについて書きます。


Rubyとはオブジェクト指向スクリプト言語の一種です。
文法がシンプルで平易な反面、強力なテキスト処理など便利さも兼ね備えた言語です。


Ruby on Rails(以降 rails)とはそのRubyで書かれたWEBアプリケーションフレームワークで、
圧倒的な開発効率を実現する、現在最も注目されているOSS開発プロジェクトの一つです。


そしてPassengerとは別名mod_rails、つまりrailsApache上で動かすApacheモジュールです。
railsは通常WEBrickと呼ばれるRubyで書かれたWEBサーバフレームワークを使用して起動します。
しかしRubyで書かれていることからも分かるように、
パフォーマンス面で問題があったり安定性に欠けていたりするのが実情です。
そこでこのPassengerを使ってrailsApacheでハンドリングする訳です。


まずRuby(と開発環境)、rails、gem(Ruby製のモジュール管理ツール)をインストールします。

$ sudo apt-get install ruby ruby-dev rubygems rails
次にRuby製のビルドツールrake(makeみたいのもの)をインストールします。

$ sudo gem install rake
でこのままPassengerもインストール・・と思ったら

$ sudo gem install passenger

ERROR: Error installing passenger:
ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb install passenger
creating Makefile
make
sh: make: not found
Gem files will remain installed in /var/lib/gems/1.8/gems/fastthread-1.0.7 for inspection

とエラーが出ました。。。
エラーを見る限りPassengerのインストール時に同時にインストールされるfastthreadのビルドに失敗しているみたいです。
そこで一度手動でビルドして、詳しいエラーを見てみようと。。

$ cd /var/lib/gems/1.8/gems/fastthread-1.0.7
$ sudo rake

rake aborted!
Could not find RubyGem echoe (>= 2.7.11)

どうやらechoeのバージョンが問題っぽい。なので、

$ sudo gem install echoe
これで再び

$ cd /var/lib/gems/1.8/gems/fastthread-1.0.7
$ sudo rake

rake aborted!
Command failed with status (1): [/usr/bin/ruby1.8 -Ilib:ext:bin:test "/usr/...]

またエラーが出ました。
トレースとかしてみて調べましたが、結局分からずでfastthreadによるエラーを色々ググってみたら
build-essentialとやらが無いとエラーが出るとかなんとかっていう一文を発見。早速

$ sudo apt-get install build-essential
そして

$ sudo rake
!成功 そして再び

$ sudo gem install passenger
無事インストール完了しました。
次にpassengerのApacheモジュールを組み込む部分をインストールします。

$ which passenger-install-apache2-module
で見つからなかったので探してみました。

$ sudo find / -name passenger-install-apache2-module
  /var/lib/gems/1.8/bin/passenger-install-apache2-module
パスが通っていなかっただけみたいなので

$ sudo /var/lib/gems/1.8/bin/passenger-install-apache2-module
これで後は依存関係にあるモジュールで怒られるくらいなのでaptなりyumなりでちゃちゃっと解消すれば
インストール完了!
Apache設定ファイルのVirtualHostディレクティブに、
インストール時に最後に出てくる記述例を参考に追記するとApache上でrailsが動くようになります。


久々に手間取ったインストールでしたが、なんとか無事終了しました。