Main Contents

2006年01月03日

mod_ruby + railsではまった…

このエントリーをはてなブックマークする このエントリーを含むはてなブックマーク | Save This Page (del.icio.us)

Rails運用環境を作ろうとしてはまった。
Apache + mod_ruby で複数のrailsアプリを動かせるようにしたかったのだが…

つまづいたのは2箇所。ひとつはWEBrickからApacheに移行しようとしたとき、もうひとつはmod_rubyで複数アプリを動かそうとしたとき。後者は結局解決できなかった。lighttpd + FastCGI環境にしておこうかしら。

WEBrickからApacheにサーバーを変更したとき

Application Errorが出て動かない。
error.logには 「Premature end of script headers: dispatch.cgi」としか出ないし、development.logには何もでない。結局、/tmp/ruby_sess.* が残っているのを見つけて削除したら、動くようになった。これで半日のロス。

mod_rubyで複数アプリを動かそうとしたとき

以下のサイトを参考にして、

mod_ruby in Ruby on Rails

Journal InTime - Apache::RailsDispatcher

次のように作業するが、cgiの内容がそのまま表示されてしまう。mod_ruby添付の解説のようにapache/ruby-runを使えば動くのだけれど、これでは複数アプリは動かせないらしいのだ。

apxsコマンドが必要になるので、開発用パッケージをインストールする。

aptitude install apache2-dev

Subversionから最新のmod_rubyのソースを取得してビルドする

svn co http://svn.modruby.net/repos/mod_ruby/trunk mod_ruby
cd mod_ruby
./configure.rb --with-apxs=/usr/bin/apxs2
make
make install

/etc/apache2/mods-enabled/ruby.loadを編集する

LoadModule ruby_module /usr/lib/apache2/modules/mod_ruby.so
RubySafeLevel 0
<IfModule mod_ruby.c>
  RubyRequire rubygems
  RubyRequire apache/rails-dispatcher
  RubyTransHandler Apache::RailsDispatcher.instance
  <Location /cookbook>
    AddHandler ruby-object .rb
    AddHandler ruby-object .cgi
    RubyHandler Apache::RailsDispatcher.instance
    RubyOption rails_uri_root /cookbook
    RubyOption rails_root /var/www/store/cookbook
    RubyOption rails_env development
  </Location>
</IfModule>

参考: LightTPD + FastCGI で複数railsアプリを動かす

TrackBacks

トラックバックURL:

Comments

Post a comment

コメントフォーム