HostingRailsの使い方

もう年も暮れそうなわけだけれども、遣り残していることを片付ける。まずは、HostingRailsについて。

レンタルサーバー選び

Railsレンタルサーバーで運営する場合、基本的にFastCGIなど通常のCGIとは違う仕組みが使えるサーバーが必要になる。CGIでも設置できるけどものすごく遅い。基本的にRailsはプロセスを常駐させて動かさないときつい。

これが出来る組み合わせとしては、

などがある。安い国内レンタルスペースだと使えるものは皆無。サーバーを一台借り切るか、VPSで仮想的に一台借り切って自分で管理してという話になる。そういったサーバーホスティングだと安くても5000円/月ぐらいは覚悟しないといけない。

そこで、海外の安いVPSなり、FastCGIその他対応のレンタルサーバーを探すことにした。安いのは

などなど。VPSも安いのだけれど、メモリ量が少なかったりして割高な感じもする。Railsアプリがきちんと動けばroot権限入らないし、アプリに関係ないセキュリティの管理とかも面倒なのでRailsアプリを公開したいだけならスペースを借りるだけのほうがらくだと思う。という判断から今回はHostingRailsにした。
細かいサーバーの仕様は
http://fromnorth.blogspot.com/2008/07/hostingrailscom.html
が参考になる。gemはかなり最初から入っているけど、自分のホーム以下にもインストールできるので変わったgemを使っていても大丈夫。

運用してみる

設置方法は、
http://www.hostingrails.com/forums/wiki_thread/1
に書いてあるので、頑張って英語読みましょう。

はまった部分をメモしておくと

railsアプリをアップロードするだけではダメ

一度

# rails your_app_name

として、空のアプリを作成する。作成した後に、自分作成したアプリの必要な部分だけをコピーしていく。先述の説明サイトによれば、

  • whole app folder (yeah, with the controllers, models, helpers, views)
  • public/images
  • public/javascripts
  • public/stylesheets
  • public/.htaccess (with the dispatch.fcgi rewrite)
  • db/migrate (but not schema.rb)
  • config/database.yml(.online, if you did this above, then remove the .online part)
  • config/environment.rb(.online, if you did this above, then remove the .online part)
.htaccessの書き換え

public/.htaccessFastCGI用に書き換えるのだが、Apache+FastCGIの組み合わせで使う場合、Basic認証の入力がApacheまでしか届かなくて、なんどパスワードを入力しても認証が通らないサイトが出来上がってしまうことがある。

RewriteRule ^(.*)$ dispatch.fcgi [E=X-HTTP_AUTHORIZATION:%{HTTP:Authorization},QSA,L]

こう書くこと。くまくまーの舞波さんが作ったHtpasswd Pluginを使っているときは注意。
http://wota.jp/ac/?date=20060525

対処方について
http://wota.jp/ac/?date=20060527