tDiaryのmod_ruby化

tDiaryをmod_ruby化してみる。

apt-get install libapache-mod-ruby

でインストール。/etc/apache/httpd.confに

LoadModule ruby_module /usr/lib/apache/1.3/mod_ruby.so

を追加。tDiaryはCGIとして動くものが、index.rb, update.rbなので <Directory "/home/httpd/tdiary">の中で

AddHandler cgi-script .rb

となっていたところを

AddHandler ruby-script .rb

に変更。これで終りのはずだが、アクセスしてみると、

Errors in plugins? Retry to Update or Configure.
   TDiary::PluginError
   Plugin error in '01sp.rb'.
   Plugin error in 'misc/plugin/category.rb'.
   incompatible marshal file format (can't be read)
   format version 4.6 required; 4.8 given
   (plugin/01sp.rb):162:in `instance_eval'

こんなエラーが出る。categoryプラグインが作っているDBのバージョンが、 期待しているものより新しいと言っているらしい。 今までCGIで動いていたrubyは/usr/local/bin/rubyに入っている1.8.1なのだが、 mod_ruby.soは1.6.7なのだ。/home/diary/category/以下を退避して、 category DBを作り直す。

root@obs# su - www-data
www-data@obs:/home/httpd/tdiary$ echo 'conf=category;category_initialize=1' | /usr/bin/ruby-167 ./update.rb

この時、PATHの最初は/usr/local/binなので

www-data@obs:/home/httpd/tdiary$ echo 'conf=category;category_initialize=1' | /./update.rb

とやってしまうと、結局1.8.1のrubyでDBが生成されてしまうのでダメだ。 これで完了。

で、どうかと言うと、速い。それほど大きな期待はしていなかったのだが、 明らかに速い。体感、半分くらいの感じ。でも何だかばらつきが大きいような...?

Last modified: 2011-03-20 by Unknown