読者です 読者をやめる 読者になる 読者になる

すがブロ

sugamasaoのhatenablogだよ

Passenger が動かない・・・!

ruby linux

Passenger を導入しようと思ったのだけど

サラのCentOS5.3 に RubyRuby gems をインストールしてある状態で、 Passenger を導入しようと思った。
で、Sinatraで鼻歌まじりのWeb開発を参考に、

gem install passenger
passenger-install-apache2-module

とやって*1、インストールできた。
あとは上記の資料を参考にディレクトリ等を作成し、passenger 経由でのアプリ起動を試してみた。
すると、フツーにpassenger のエラー画面になるので、ちまちまエラーを潰してゆく。

で、この画面の下記のような部分は足りないライブラリになるので、gem install でインストールしていく。

Error message:
RubyGem version error: ruby-openid(2.1.6 not ~> 2.0.0)

ちなみに、fcgi のインストールは下記を参照した。

でも、まだ動かない

上記の画面キャプチャーにのっている、openid のライブラリインストールでハマった。

Error message:
RubyGem version error: ruby-openid(2.1.6 not ~> 2.0.0)

ruby-openid をフツーにインストールすると、最新の 2.1.6 がインストールされるのだけど、何故かバージョンエラーで怒られる。
gem の説明によると、 ~> という書き方は、指定バージョン以上で、最新のバージョンというものを示すらしいが、gem でインストールできる最新版をインストールしているにもかかわらずエラーになる。どういうこった。
さっぱり原因が分からない上にエラーメッセージでググってもほとんど情報が出てこないので、仕方なく検索で引っかかった英語のサイトGoogle Groupsを見てみる。
どうやら同じ症状のようで、リプライもある。
それによると

Please upgrade rubygems and try again, 1.3.x has been out for many moons now.

というわけだ。つまり、rubygems のバージョンを 1.3 系にあげろって事だと思われる。
じゃあ、自分の rubygems はいくつなん? 確認してみる。

% gem --version
1.2.0

なるほど、これが原因か。
で、rubygems 1.3 系からは gem 自身のアップデート方法が変わったようなので、新しい方法でアップデートしてみる。

% sudo gem install rubygems-update
% sudo update_rubygems

これで 1.3 系にアップグレードできたみたいだ。

じゃあもう一回確認してみよう!

胸の高鳴りを押さえながら、もう一度 passenger を動かしている URL を覗いてみると・・・

小さくて分からないかもしれないけど、 hello! と書いてある。
これで Apache 経由で sinatra アプリが動かせる!!

まとめ

  • passenger 入れる(yum httpd-devel が無いとダメだよ!)
  • fcgi 入れる(ソースから)
  • gem のバージョンが 1.3 より古ければ、 1.3 に上げる
  • 足りないライブラリは rubygems 経由でインストールする

今回はサラの CentOS*2 にインストールしたため、 fcgi とか、フツーに使ってたら入ってるんじゃね? 的なものが入ってなくて余計な道を通ってしまったけれど、比較的簡単に動かす事ができた。やりましたね。

*1:別途、yum install httpd-devel する必要はあったけど

*2:前まで Fedora7 を使っていたのだけど、数日前にカッとなって CentOS 5.3 を入れてしまった