さくらインターネットで gateway.cgi を使う@Rails 2.1.1
fcgi と drb を使って 90 秒だけ生存するサーバみたいな感じですかね.
基本的にhttp://d.hatena.ne.jp/cimadai/20080923/RubyonRails_on_sakuraを参考にしました.
1. Rails/Gem のインストールなど.
どこぞにある方法で.
2. fcgi のインストール
$ cd ~/local/srv $ wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz $ tar zxvf fcgi-2.4.0.tar.gz $ cd fcgi-2.4.0 $ ./configure --prefix=$HOME $ make $ make install $ gem install fcgi -- --with-fcgi-include=$HOME/local/include
$ cp ~/local/ruby/lib/ruby/gems/1.8/gems/rails-2.1.1/dispatchers/gateway.cgi ~/www/apps/ $ cp ~/local/ruby/lib/ruby/gems/1.8/gems/rails-2.1.1/lib/commands/ncgi/listener ~/rails/apps/script $ cp ~/local/ruby/lib/ruby/gems/1.8/gems/rails-2.1.1/lib/commands/ncgi/tracker ~/rails/apps/script $ chmod 755 ~/www/apps/gateway.cgi
4. ファイルの書き換え
4-1. .htaccess
RewriteEngine On RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ gateway.cgi [QSA,L] ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
4-2. listener の fcgi_handler の前に次の2行を追加.
require 'rubygems' gem 'fcgi' require 'fcgi_handler'
4-3. listener の self.stdoutput の次に追加
$stdin = self.stdinput $stdout = self.stdoutput
4-4. gateway.cgi/listener/tracker 共に ruby のパスを変更.
4-5. production.rb に relative_url_root の設定を追加.
ActionController::AbstractRequest.relative_url_root = "/apps"
こんな感じで動作するようになりました.