XREA + tDiary + Namazu

xrea_tdiary_namazu

XREA上でtDiaryの日記の内容をNamazuで検索する方法について私なりにまとめたものです。 tDiary-1.4.1以降で参考になると思います。

tDiaryの準備

XREAのhoge.s1.xrea.comがあなたのサイトだとします。

まず、ディレクトリ構成は、zt diaryのインストールメモと同じとします。ちょっとバージョンが古いのでtDiary-1.4.x向けにディレクトリ構成だけもう一度こちらに書いておきます(ここで追加するディレクトリ構成以外はzt diaryがそのまま参考になりますのでそちらを参照してください)。

705(drwx---r-x) ~/
705(drwx---r-x)  +--namazu/
701(drwx-----x)  +--tdiary/
755(drwxr-xr-x)  |        +--cache/
604(-rw----r--)  |        +--.htpasswd
644(-rw-r--r--)  |        +--200109などの後から生成されるファイル
705(drwx---r-x)  +--public_html/
701(drwx-----x)           +--t/(tDiaryのインストール先)
700(-rwx------)              +--*.cgi (index.cgi,update.cgiなど。オリジナルのままならindex.rbとupdate.rb)
600(-rw-------)              +--tdiary.rb
600(-rw-------)              +--*.conf
700(drwx------)              +--erb/
701(drwx-----x)              +--theme/
700(drwx------)              +--plugin/
600(-rw-------)                   +--*.rb
700(drwx------)              +--misc/

上記も含め、すでにtDiaryのセットアップ・動作確認は済んでいるものとします。

1ファイル毎のHTMLファイルの用意

ここではsqueeze.rbを使います。

tdiary.confの編集

tdiary.confを編集します。

 @text_output = false  @text_output_path = ''

すでに日記がある方

新規に日記をはじめる人はこの部分は飛ばしてください。

まず、squeeze.rbを ~/public_html/t/ に置きます。アクセス権は700にします。 次に、WWWブラウザからsqueeze.rbにアクセスします。 URLは http://hoge.s1.xrea.com/t/squeeze.rb です。

日記の日付がずらずらと出力され、最後にEnd!と表示されます。表示されない場合は何か問題があるはずです。 念のため、 ~/tdiary/cache/html/YYYY/MMDD (YYYYは年、MMは月、DDは日)というファイルができているか確認します。 もちろん、これらのファイルはすでに日記のある日の分しかできません。

うまくいったら、念のためsqueeze.rbを削除しておきましょう。

プラグインの導入

ここからは新規に日記をはじめる人もそうでない人も必要です。

squeeze.rbを ~/public_html/t/plugin/ に置きます。アクセス権は600です。 試しに日記を書いて登録してみてください。 ~/tdiary/cache/html/YYYY/MMDD にその日の日記が出力されているはずです。

Namazuの導入

ディレクトリの追加

以下のディレクトリを追加します。

705(drwx---r-x) ~/
705(drwx---r-x)  +--namazu/
700(drwx------)           +--index/   ← 追加(mknmzのインデックス出力先)
705(drwx---r-x)  +--public_html/
701(drwx-----x)           +--t/(tDiaryのインストール先)
701(drwx-----x)           +--namazu/  ← 追加(namazu.cgiのインストール先)

インデックスの生成

Namazuのインデックスを生成します。 hoge.s1.xrea.com上で以下のコマンドを実行します。

$mknmz /virtual/((*hoge*))/tdiary/cache/html --output-dir=/virtual/((*hoge*))/namazu/index

.namazurcの編集

.namazurcを作成します。

Index /virtual/((*hoge*))/tdiary/namazu/index/
Replace /virtual/((*hoge*))/tdiary/cache/html/(\d\d\d\d)/ http://((*hoge.s1.xrea.com*))/t/?date=\1
Lang ja

ファイルの配置

namazu.cgiと.namazurcを共に~/public_html/namazu/ に置きます。アクセス権限はnamazu.cgiが700、.namazurcが600です。

確認

WWWブラウザからnamazu.cgiにアクセスします。URLは http://hoge.s1.xrea.com/namazu/namazu.cgi です。

Namazu向けテキストボックスを配置する

ここまできたら、あとは自分の日記から検索できるようにしてみましょう。 search_form.rbを ~/public_html/t/plugin/に置きます。アクセス権は600です。

次に、WWWブラウザでtDiaryの設定画面を呼び出し、ヘッダ、あるいはフッタの部分に以下の情報を追加します。

<div class="search">
  <%=namazu_form "/namazu/namazu.cgi" %>
</div>

これで準備万端です。日記のトップページにNamazu用の検索フォームが出ているはずです。あとは、実際にここから検索ができるか試してみましょう。

インデックスをWWWブラウザから更新する

Namazuのインデックス化(mknmz)は、自動では動作しませんので日々実行する必要があります。通常はcronなどを使うのですが、XREAではcronを使えません。 毎回、XREAにsshするのは大変ですので、せめてWWWブラウザから呼び出せるようにCGI化します。XREAのサポート掲示板にNamazu用indexing CGI script(dimbulaさん作)がありましたのでこれを利用させていただきます。

#!/bin/sh

outdir=/virtual/((*hoge*))/namazu
target=/virtual/((*hoge*))/tdiary/cache/html
logfile=/virtual/((*hoge*))/log/namazu.log

LANG=ja; export LANG	# for Japanese

echo "Content-type: text/plain"
echo
echo -n "Indexing... "

/usr/local/bin/mknmz -O $outdir $target > $logfile 2>&1

if test $? -eq 0; then
  echo -n "Done."
else
  echo "Failed."
  echo "Check log file and index."
  echo "log file: $logfile"
  echo "index directory: $outdir"
fi

これを、~/public_html/namazu/配下にmknmz.cgiとして保存します。アクセス権は700です。

ただ、これだけだと他人に呼び出されてしまいますので、同じディレクトリに.htaccessを置きます。アクセス権は600です。 .htaccessの内容は以下の通りです。

<Files mknmz.cgi>
  AuthName      tDiary
  AuthType      Basic
  AuthUserFile  /virtual/((*hoge*))/tdiary/.htpasswd
  Require user  ((*hoge*))
</Files>

あとは、WWWブラウザからアクセスするだけです。URLは http://hoge.s1.xrea.com/namazu/mknmz.cgi です。

たまに呼び出すようにしましょう。呼び出すたびに最新のインデックスに更新されます。

その他

ここまでくれば、あとは、Namazuの表示結果を日記と同じデザインにする等をしたくなると思いますが、その辺は他のNamazuを詳しく紹介しているサイトなどを参照してください(実は力つきた(^^;))。

傾向と対策

気がついた傾向と対策を。

全般

ssh/ftpがつながらない

XREAの管理画面の「ホスト情報の登録」で再度登録してみてください。ちなみに、ここでの設定は全てftpのみで行うことができます。

tdiary.conf

tDiaryの画面が崩れる

tdiary.confの設定を見直します。

squeeze.rb

CGIとしてWWWブラウザから呼び出した際にエラーが出る

squeeze.rbのパーミッションを再度確認してください。必ず、ユーザアカウントの実行権が必要(700)です。また、.htaccessを使用している場合は、それが間違えていないか確認します。

namazu.cgi

検索結果画面でエラーが出る

XREAではエラー画面がとっても分かりづらいです。そのような場合、XREAのサポート掲示板のmstkさんの投稿を参考にして、以下のようにtest.cgiを作って、namazu.cgiと同じディレクトリに置いて(もちろん、実行件付き)実行するとnamazu.cgiのエラーメッセージを表示できます。

#!/bin/sh
echo Content-Type: text/plain
echo
./namazu.cgi 2>&1
何も表示されない

.namazurcが正しくない場合があります。 特に、Indexに指定するディレクトリが間違えていないか、あるいはそのディレクトリ自体のパーミッションがきちんと指定されているか確認します。

検索結果は出るが、その際のリンク先がサーバのディレクトリになっている

.namazurcのReplaceに指定する文字列が間違えていないか確認します。

namazu.cgiをftpで転送したら動かない!

ftpはバイナリモードとテキストモードがあります。namazu.cgiはバイナリモードで転送する必要があります。

ChangeLog

2002-04-14 MUTOH Masao <mutoh@highway.ne.jp>
  • @optionsを使わずにyasqueeze-1.3.1のデフォルト値をそのまま使うようにした
  • 傾向と対策に加筆
2002-04-02 MUTOH Masao <mutoh@highway.ne.jp>
  • tDiary-1.4.1以降のみ対応(@options対応)
  • .namazurcが間違っていたのを修正 (Reported by 恵司さん)
  • 傾向と対策を追加
2002-03-25 MUTOH Masao <mutoh@highway.ne.jp>
  • 初執筆
更新日時:2003/07/06 19:18:48
キーワード:
参照:[tDiary関係]