さくらインターネットで 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
  1. gateway.cgi の準備
$ 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
  1. ファイルの書き換え 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"

こんな感じで動作するようになりました.

 
comments powered by Disqus