この記事は少し古いが設定は合っているはず。もう少しあとで修正の予定。
XREAのサーバーには標準でnamazuがインストールされているので使ってみることにした。
最初から/virtual/userID/namazu/にnamazu.cgiとmake_index.shが入っている。この2つのファイルを日記のディレクトリに/namazu/を作ってその中にコピーする。make_index.shの中を適宜自分の環境に合わせて編集した後ブラウザからcgiとして実行するためmake_index.cgiとして保存する。
#!/bin/sh
echo "Content-type: text/html
<HTML><BODY>
Make index...<HR>
<TEXTAREA COLS=80 ROWS=50>
"
echo 'Index /virtual/userID/namazu/nobdiary' > .namazurc
echo 'Template /virtual/userID/namazu/nobdiary' >> .namazurc
echo 'Replace /virtual/userID/var/tdiary/nobdiary/cache/html/(\d\d\d\d)/ http://nob.ivyvalley.net/diary/\1' >> .namazurc
echo 'Logging on' >> .namazurc
echo 'Lang ja' >> .namazurc
echo 'MaxHit 10000' >> .namazurc
echo 'MaxMatch 1000' >> .namazurc
cp -uf /usr/local/libexec/namazu.cgi ./;chmod 700 *;
cd /virtual/userID/namazu/nobdiary/
/usr/local/bin/mknmz -V --media-type='text/html' --indexing-lang=ja /virtual/userID/var/tdiary/nobdiary/cache/html/ > /virtual/userID/namazu/nobdiary/make_index.log
cat /virtual/userID/namazu/nobdiary/make_index.log
echo "</TEXTAREA><HR>Finished!! </BODY></HTML>"
exit
namazuはmsearchと違ってwebから見えない場所にsqueeze.rbのはき出すHTMLが有ってもReplaceで書き換えてくれるので今までのように自分のDiaryのディレクトリでなく、squeeze.rbのdefaultであるcache内でも可能になった。もちろんインデックス用のディレクトリ/virtual/userID/namazu/nobdiaryは先に掘っておく必要がある。
これで/diary/namazu/namazu.cgiを実行すればよい。tDiaryプラグインのsearch_form.rbを使えば簡単に日記内にフォームを設置できる。
と、ここまでは良いのだが、インデックスの自動更新をどうするかがいまいちひらめかない。日記だけならcrontabで実行すればよいが、今回のようにサイト自体をtDiaryとHikiだけで構成しているので、ディレクトリ毎に動いているtDiaryがsqueeze.rbではき出すHTMLをインデックス化しなければならないわけで。しかし、XREAが最近crontabを許可したとはいえ、管理画面からは3つまでしかジョブを登録できない。しかも負荷が高いと蹴られるようだし。
プラグインで自動更新というのが{{tlink "http://shimoi.s26.xrea.com/ydiary/","trial(日記)","最近更新されていないようだ"}}で紹介されていたのでそれを使わせてもらうか、1つのシェルスクリプトに複数のジョブを実行させてcrontabで動かすか、何らかの方法を考えないと実現できない感じです。もうしばらく悩みそう。
一旦{{tlink "http://shimoi.s26.xrea.com/ydiary/20030205.html#p01","trial(日記)","xreaで日記更新時にnamazuのインデックス作成"}}の記事を見て試してみることにした。ちゃんとインデックスが出来るかなぁ?
!!追記:
うまくいきました。たぶん大丈夫なんだと思います。
# zzz_nobdiary_mknmz.rb
@my_mknmz = "/usr/local/bin/mknmz"
@my_mknmz_outdir="/virtual/userID/namazu/nobdiary/"
@my_mknmz_target="/virtual/userID/var/tdiary/nobdiary/cache/html"
@my_mknmz_logfile="/virtual/userID/log/nobdiary-namazu.log"
add_update_proc do
my_mknmz
''
end
def my_mknmz()
cmd_line = %Q[#{@my_mknmz} --media-type='text/html' --indexing-lang=ja -O #{@my_mknmz_outdir} #{@my_mknmz_target} > #{@my_mknmz_logfile} 2>&1]
system(cmd_line)
end
このようにtrial(日記)からもらってきたzzzmknmz.rbの変数を自分の環境に合わせて書き換えプラグインディレクトリに入れたあと、日記を更新して指定したlogファイルを見るとインデックスが更新されてました。
まず最初にインデックスを作るときはmake_index.cgiでつくって、その後の日記の更新時にzzz_nobdiary_mknmz.rbを使うと負担も軽く、確実にインデックスがアップデートされていくという実に快適なシステムになりました。ありがとうございます。