fcgi と drb を使って 90 秒だけ生存するサーバみたいな感じですかね. 基本的に[http://d.hatena.ne.jp/cimadai/20080923/RubyonRails_on_sakura]を参考にしました.
- Rails/Gem のインストールなど. どこぞにある方法で.
- 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
- 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
- ファイルの書き換え 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