Hikiのmod_ruby化

Hikiの0.8.0 preview1がリリースされた。mod_rubyに正式対応したそうなので、早速試してみようかと。が、rubyが1.8以降になってしまってる。woodyのlibapache-mod-rubyは1.6.7だ。仕方ないのでソースから入れてあったapache2で試すことに。apache2にはmod_rubyが無いので、まずこれから。

$ tar zxvf mod_ruby-1.2.0.tar.gz
$ cd mod_ruby-1.2.0/
$ ./configure.rb --with-apxs=/usr/local/apache2/bin/apxs

/usr/local/apache2/bin/apxsの先頭に

#!/usr/local/bin/perl -w

と書いてあってエラーになるので(今まで使ったこと無かったのか?)、

# ln -s /usr/bin/perl /usr/local/bin/

としてから作業継続。

$ make
# make install

httpd.confに以下を追加。

LoadModule ruby_module modules/mod_ruby.so

続いてHiki本体。hikifarmにしたいのでmisc/hikifarm/READMEに従ってインストール。

Hiki本体 → /usr/local/hiki-0.8.0
CGI → /home/httpd/hiki08
データ → /home/hiki08-data

httpd.confに以下を追加。

Alias /hiki "/home/httpd/hiki08"
<Directory "/home/httpd/hiki08">
AllowOverride None
Options +ExecCGI +FollowSymLinks
#AddHandler cgi-script .cgi
RubyRequire apache/ruby-run
<Files *.cgi>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
</Files>
DirectoryIndex index.cgi
Allow from all
</Directory>

これで完了。0.6.5のhiki-data/をそのままコピーするとinternal errorになるので、まずメニューからWikiサイトを作ってデータだけコピーする。

Wikiサイト名/hiki.conf

のフォーマットが違うのがいけないらしい。しかもその場合は、

http://server/hiki/Wikiサイト名/

は問題無く動くのに、

http://server/hiki/

がinternal errorなので、非常にわかりにくい。あと、管理メニューで更新すると落ちる。これもhiki.confのフォーマットか?落ちるとhiki.confが無くなってしまうようなので、あんまり試してない。
何はともあれ、それなりに動くようだ。てか、あからさまに速い。下手したら倍くらいの感じ。でもかみさんは満足しないだろーなー...
動くとなったら、他のものもさっさと移行して、apache2に一本化してしまいたい。tDiaryhttpd.confの追加だけで問題無さそう。

Alias /hdiary "/home/httpd/tdiary"
<Directory "/home/httpd/tdiary">
AllowOverride None
Options +ExecCGI
#AddHandler cgi-script .rb
RubyRequire apache/ruby-run
<Files *.rb>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
</Files>
DirectoryIndex index.rb
Order allow,deny
Allow from all
<Files update.rb>
AuthName      tDiary
AuthType      Basic
AuthUserFile  /home/.htpasswd.md5
Require user  xxx
</Files>
</Directory>

namazucgiの場所の変更、

#ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin/"

例によってnamazuの検索結果が化けるので、DefaultCharsetをコメントアウト

#AddDefaultCharset ISO-8859-1

cgiディレクトリの変更でsqwebmailも動くのではと思ったが、どうもダメっぽい。どうやらSSLが動いてない模様。セットアップ済のはずなのだが...調べてみると、443がlistenしてない。443ポートはssl.confで指定していて、httpd.confがssl.confをincludeしている。試しにssl.conf全体を囲んでいる、

#<IfDefine SSL>

コメントアウトしたら動くようになった。サーバ証明書もセットアップしてあったので、以前は動いていたはずなのだが...意味わからんが、とりあえず動いたのでそれ以上追求せず。これで一通り常用していたものはapache2に移行できているはずなので、当面様子を見ることに。
忘れてた。Hikiの自作プラグインがまだだ...