さくらインターネットでRedmineを高速化するメモ
※2009/11/11 追記あり
アドバイスいただいたのでさっそく適用してみました。
例によっていろんなところに似たような記事がありますが、
さくらサーバのOSアップデートのせいか知りませんが
参考記事そのままだと動かなかったりしたのでやっぱりメモ。
gateway.cgiで動かすとさくらサーバの規約違反にもならず、高速化も望めるようです。*1
環境
redmine 0.8.5
ruby 1.8.7(さくらデフォルト)
rubygems 1.3.1
rails 2.1.2
mysql(さくらで提供されているmysql)
rails 2.1.2
fcgi 2.4.0
前回とほぼ同じ。fcgiが増えました。
fcgiインストール
ダウンロードしてmake installです。
wget http://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/local make make install
gemでfcgiのインストール。
ちなみにRB_USER_INSTALLはさくらでgem使うときには必ず設定しておいた方が良さげ。
export RB_USER_INSTALL=true gem install fcgi -- --with-fcgi-include=$HOME/local/include --with-fcgi-lib=$HOME/local/lib
以後、Railsルートで作業します。
gateway.cgi関連のスクリプトコピー
自分が使ったRedmineはrails込パッケージなので、
今回はそのパッケージから必要なものを使うことにします。
コピー元はgemのrailsでもOKです。
cp vendor/rails/railties/dispatches/gateway.cgi public/ cp vendor/rails/railties/lib/commands/ncgi/listener script/ cp vendor/rails/railties/lib/commands/ncgi/tracker script/
public/gateway.cgiのパッチ
上の方に以下を追加。
ENV['RAILS_ENV']||='production'
sleepを0.5→1秒に増加。
10.times do sleep 1 break if (ready = File.exist?(TrackerSocket) && File.exist?(listener_socket(0))) end
script/listenerのパッチ
vi script/listener
require 'fcgi_handler'の直前に以下を追加。
require 'rubygems' gem 'fcgi'
initializeファンクションの
self.stdoutput = output || StringIO.new
直後に以下を追加。
$stdin = self.stdinput $stdout = self.stdoutput
config/routes.rbに relative_url_root を追加
URL上のRailsルートパスを指定する必要があります。
たとえば、
http://toritori0318.sakura.ne.jp/redmine/
であれば「/redmine」を指定します。
ActionController::Routing::Routes.draw do |map| ActionController::AbstractRequest.relative_url_root = "/redmine"
ハマりどころ
一度アクセスした後でスクリプト更新してすぐにアクセスしても、
しばらくは更新前のスクリプトが残っていたりして、
更新が即時反映されない場合がありました。
その場合は3分くらい待ってから再度アクセスしてみましょう。*2
2009/11/5 追記
最初のアクセスで「Application error」が発生することが多いですね。
更新すると普通に使えるのでいいんですけど…
2009/11/11 追記
やはり不安定なので、以下を参考にソケット待ち時間をさらに長くしてみる…
http://tsukax.blog50.fc2.com/blog-entry-51.html
※参考文献
http://d.hatena.ne.jp/cimadai/20080923/RubyonRails_on_sakura
http://d.hatena.ne.jp/replication/20090323/1237735348
http://d.hatena.ne.jp/conceal-rs/20081007/1223386407
http://hidekita.sakura.ne.jp/blog/dev/2009/08/gatewaycgirails.php