Semantic Web – WordPress

mt-search.cgi vs Namazu mknmz cron ジョブ

with 4 comments

[追記 2006/12/31] namazu.cgi をFTPで転送するときBinary バイナリーモードです(通常のcgiファイルで用いる ASII アスキーモードでは内部サーバ・エラーとなります)。

Movable Type デフォルトのサイト内検索 Search は、とても簡便なのでよく利用されているようです。しかし、search_templates ディレクトリにある検索テンプレート comments.tmpl, default.tmpl を独自に変更した私の場合、Movable Type の(マイナー)バージョンアップの作業が増えるにつれて、MT の "夾雑物" 的存在となりました ( しかも、もともと高機能ではありませんし)。
よって、高速な全文検索システム 「Namazu」 のパワーを借りることにしました。以下は、MTで利用する際の tips です。
なお、必ずエントリーの最下段 [更新情報] をご一読下さい。また、ダイナミックページ, html 以外のページ形式 はアクセスできないようです。

(1) ホームディレクトリのトップ内にディレクトリ namazu, namazu内にファイル namazu.cgi および make_index.sh が存在することを確認します。ファイルを誤って削除した場合、ディレクトリのみ作成します。

(2) Movable Type 用のオリジナル(独自)ドメイン内に namazu.cgi のコピーを設置するディレクトリを作成します。

(3) 上記(2)のディレクトリ内に自動生成される設定ファイル .namazurc がブラウザでアクセスされないように .htaccess ファイルをアップロードします。
    http://www.namazu.org/FAQ.html.ja#dot-namazurc

(4) 日本語全文検索システム Namazu は、Xrea.com さんのサーバ内 /usr/local/libexec/ にデフォルトでインストールされていますので、導入法
    http://sb.xrea.com/showthread.php?t=4267&goto=nextnewest
を実行します (インデックス用ディレクトリ namazu は、ブラウザではアクセスできないホームディレクトリのトップに作成されますので、比較的安全です)。

(4) インデックス作成 mknmz を cron ジョブで実行し、インデックスファイルを定時的に更新できるように、スクリプトを作成し、管理ページで設定します ( cron ジョブの設定法については、当ブログ内の関連エントリーをご覧下さい)。

(例: cron ジョブ用スクリプト名 cron123.sh )
ユーザーID: user-id
オリジナルドメイン名: example.com
Namazu インデックスの対象:
    アーカイブ archives ディレクトリ内のファイルで、文書形式 text/html に限る。
ブログページからリンクする namazu.cgi の設置ディレクトリ:
    http://www.example.com/archives/search/ (注: ホームディレクトリのトップにあるディレクトリ namazu ではありません)。

#!/bin/sh

cd /virtual/user-id/public_html/http://www.example.com/archives/search/
cp -uf /usr/local/libexec/namazu.cgi ./;chmod 700 *.cgi;
cd /virtual/user-id/namazu/
/usr/local/bin/mknmz -V –media-type=’text/html’ –indexing-lang=ja /virtual/user-id/public_html/http://www.example.com/archives/ > /virtual/user-id/namazu/make_index.log
rm -f /virtual/user-id/namazu/namazu.cgi;cp -uf /usr/local/libexec/namazu.cgi /virtual/user-id/namazu/;chmod 700 *.cgi;
echo update!
exit

(注:)2つのディレクトリに namazu.cgi をコピー cp -オプションuf するコマンドは、Namazu のバージョンアップに対応したものです。もし、アーカイブページが多く、インデックス生成のタスクに時間がかかるようであれば、コマンド cp を含む行をコメントアウトする (ないし、mknmzによるファイル更新をサーバ負荷のできるだけ少ない時刻に設定する) などの変更をおすすめします。

(5) namazu.cgi のコピーが自動生成されたディレクトリ (2) 内の make_index.cgi を削除します。cgi 属性の変更は無効ですので、リネーム.cgi では危険です。

(6) [MT]/mt-search.cgi の属性を 600 に変更し、使用停止とします。

(7) MT テンプレート メインページの「サイト内の検索」フォームを namazu.cgiのコピー(2) へのリンクに変更します。
    (例) http://www.example.com/archives/search/namazu.cgi

(8) ホームディレクトリのトップディレクトリ namazu 内の NMZ.head.ja NMZ.foot.ja などを適宜編集します。
    [例: cron 時に自動更新されるようにスクリプトを追加します]

[更新情報 Date: Wed Mar 14 16:43:01 2007]
バージョン ⇒ Namazu: 2.0.17
cronジョブによりpdf,doc,xls,pptなどのファイルをindexingするとき、文書フィルタの$PATHをshellscript内で指定しなければなりません。
エントリー「namazu-cron-pdf,doc,xls,ppt-$PATHと文書フィルタ」
 http://www.osbsd.net/2007/05/namazumknmzrc_654b.html
をご覧下さい。

[旧バージョンについて] 2005/1/30現在, Xrea.com さんのサーバで稼働中の Namazu は Version 2.0.13 であり、
   cross-site scripting 脆弱性
の問題があります。よって、Xrea.com さんのサポート宛て、バージョンアップ (2.0.14) を依頼するとともに、一時的に従来の検索システムにて運用します。
  [回答 1 Feb 2005 01:44:31 +0900] 「バージョンアップを行いますと、古いバージョンのバイナリ: namazu.cgi がライブラリの関係で動作しなくなることが確認できているため」、アナウンス後、更新を検討中とのことです。

Written by support

2005/01/30 @ 14:06

カテゴリー: cronジョブ

コメント / トラックバック4件

Subscribe to comments with RSS.

  1. 初めまして。Namazuとcronジョブ共に初心者なのですが、
    namazu.cgiのコピーをindex.cgiとリネームして、
    ディレクトリでアクセスできるようにしたいのですが、
    その場合cronジョブをどのように設定しなおせばよいのでしょうか?

    litoma

    2006/02/22 at 20:12

  2. コメントありがとうございます。ブログ主催者の tipsです。
    ブログの日々のアーカイブ エントリーが namazuのログ make_index.logに反映しなければなりませんので、cronで定期的にmake_index.log等を更新する方法をお伝えいたしました。
    namazu.cgiはコンパイルされた実行ファイルですので、ユーザーがカスタマイズすることはできません。もし、namazu.cgi以外のファイル名を使用したいときは、/usr/local/bin/mknmz のオプションを変更すると可能かもしませんが、未確認です。実際に namazu.cgi で動作確認後、namazuの無償提供サイトのマニュアル等でご調査下さい。
    サンプルページ
    http://infohitomi.biz/archives/no_search/namazu.cgi
    は、昨夜作成したデフォルトの検索画面です。不要なものが多いときは NMZ.head.ja, NMZ.foot.ja を変更します。なお、Xrea.comさんの現在のバージョンは 2.0.14です。バグは解決されていますが、ときどき提供サイトでセキュリティに関する報告のチェックをおすすめいたします。

    tips

    2006/02/23 at 09:55

  3. tipsです。追加いたします。
    mknmz, namazu のオプション (バージョン 2.0.15の新オプションを含む)の中に、リネームに関するものはないようです。
    (1) サイト内検索に関する案内ページ index.htmlを別に作成し、
    検索(式)フォーム
    <form method="GET" action="/***/***/namazu.cgi">
    を埋め込む。
    (2) .htaccess に下記のように追記する (例)
    Options -Indexes
    <IfModule mod_dir.c>
    DirectoryIndex namazu.cgi index.php index.html index.htm default.htm default.html
    </IfModule>
    URL http://独自ドメイン/PATH/ とすれば、検索画面となります。
    当ブログは最近、TypePadに変更しました。上記のような cgi, htaccessは使用できませんので、Google のクローラにお任せです。なお、サニタイズされないよう< >は全角表示です。

    tips

    2006/02/24 at 12:06

  4. なるほど。大変判り易い説明ありがとうございます。
    追記の2つの方法は一応思いつきはしたものの、
    何となく邪道感がして実行するに至らなかったのですが、これで決心がつきました。
    tipsさんのXREA関連のログは有益なものばかりで、とても参考になります。
    これからも陰ながら応援しています。

    litoma

    2006/02/25 at 02:03


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。