Windows版Railsで開発したWebアプリケーションをLinux上のApacheで動かす

まる2日費やしました。orz
Linux(Debian)上で動かす場合は以下のようにする。

  • RubyCGIが動く設定をする(mod_ruby)。
  • /etc/apache2/apache2.confを編集して、Railsのトップ画面(public/index.html)

が表示されるように設定
(Alias or リンク)と、Directoryの設定

(省略)

RewriteBase /rails   # railsはアプリケーション名
  • public以下のdispatch.cgiと、dispatch.rbの1行目を以下のように修正する。
#!/C:/ruby/bin/ruby → #!/usr/bin/ruby
  • dispatch.cgiを実行可能にする
chmod 755 dispatch.cgi
  • tmp以下のsessionを削除し、logファイルを書き込み可能にする
rm tmp/sessions/*
chmod 666 log/*
  • MySQLのDB名やユーザ名などが違う場合は以下のファイルを修正する

config/database.yml

久しぶりに、どっぷりはまりました。
さらにいえば、XML形式でレスポンスを返すような場合、

render :layout => false, :xml => @xml

みたいな感じで出来るのはいいが、同じcontroller内で、

p @xml

とかやってると、わけのわからんエラー(Malformed header from script...)が出るので注意。
しかし、噂どおりのもっさり感なので、FastCGIにするか、それとも他のものにするか悩み中。