namazu設定 for unix

home 一覧 掲示板 リンク 検索方法



namazuって?
インストール
仕組の簡単な解説
インデックスを作ろう
namazuで検索してみよう
HP上から検索してみよう
WEBに張りつける
特定のファイルは検索しないようにする
毎日インデックスを更新するようにする
辞書にmecabを使う
特定のディレクトリを検索から除外する
※書いてあることの保障はしません。

namazuって?

自分のサイトにサイト内検索のフォームを入れたいと思ったことはありませんか?UNIX/LINUXサーバーでそれを手軽に実現できるのがnamazuです。当サイトの逆引きコマンド検索もnamazuを使っています。

インストール

yumが使える環境であれば
yum install namazu
yum install kakasi-dict
でインストールされます。kakasi-dictというのは、namazuで使用する辞書のことです。

また、他の方法については、namazuの本家のページインストール手順が書かれています。

仕組の簡単な解説

二つのコマンド
mknmz : インデックスを作る
namazu : インデックスから検索する

簡単にはこの二つのコマンドの組み合わせだと思って下さい。
まず、mknmzでインデックスを作成し、namazuでインデックスから探すのが基本です。すなわち、インデックスを作るのは一日一回とかページが更新されたらで良いわけですが、namazuは検索の度毎におこなわれます。

以上をHP上で動かすためにはさらに、
namazu.cgi
が必要になります。

インデックスを作ろう

インデックスとは、htmlなどの検索キーワード等が入っているところです。
検索したいHPのあるディレクトリ(/var/www/htmlとします)とインデックスをいれておくディレクトリ(/var/lib/namazu/index/とします)

mknmz -aO /var/lib/namazu/index/ /var/www/html/

でインデックスができます。

注意:引数-aはすべてのファイルを検索対象にするオプションです。デフォルトではhtmlのみになってしまいます。

namazuで検索してみよう

namazu -a -s keyword /var/lib/namazu/index/

でインデックスの入ったディレクトリ(/var/lib/namazu/index/)からkeywordを検索できます。できましたか? できなければ、インデックスの場所が違うか、インデックスが作られてない可能性があります。

HP上から検索してみよう

まず、/etc/namazu/namazu.cgiにあるnamazu.cgiをwebが見えるところに移動するか、シンボリックリンクを貼りましょう。シンボリックリンクの場合、apacheの設定が必要なことがあるので注意しましょう。ここでは、/var/www/cgi-bin/namazu/namazu.cgiにおくとします。,
(※/etc/namazu/にない場合もあるでしょう。そのばあい、探しましょう。find / -name namazu.cgi )

設定ファイルは/etc/namazu/namazurcです。このまま設定しても使えます。namazu.cgiと同じディレクトリにおいて使うには、いちおうセーブをとって
cp /etc/namazu/namazurc /etc/namazu/namazurc_save
動かします。このときドットをつけて.namazurcとします。
mv /etc/namazu/namazurc /var/www/cgi-bin/namazu/.namazurc

.namazurcのなかを

Index /var/lib/namazu/
Template /var/lib/namazu/index
Replace /var/www/html/ http://サーバー名/
Lang ja_JP.eucJP

にします。
Indexはインデックスのある位置を教えます。Templateは/var/lib/namazu/index/にあるNMZなんちゃらというのが、namazu.cgiの見えている部分をおしえます。Replaceはリンク先をローカルファイルではなく、アドレスで教えるためです。Langは言語です。

また、/var/lib/namazu/index/NMZ.head.ja内を

input type="hidden" name="idxname" value="index"
a href="{cgi}"a href="{cgi}?idxname=index"
とします。
http://サーバー名/cgi-bin/namazu/namazu.cgiが見えるでしょうか?見えない場合、通常のpermissionチェックを行ないましょう。ほかには、もしかするとSELinuxのせいかも知れません。ls -Zをしてsystem_u:object_r:httpd_sys_script_exec_tというのがでますか? でなければ
chcon system_u:object_r:httpd_sys_script_exec_t namazu.cgi
をして変更します(chcon)。 ls -Z /var/lib/namazu/index/はどうですか? こっちもsystem_u:object_r:httpd_sys_script_exec_tにしましょう。

WEBに張りつける

ここのソースを見ましょう。formとかいうところがそうですね。

特定のファイルは検索しないようにする

index.htmlや一覧(itiran.htmlとする)などは検索にかからないようにしたいものです。このようなときは
mknmz -a --deny='index.html|itiran.html' -O /var/lib/namazu/index/ /var/www/html/
のようにして、拒否します。

毎日インデックスを更新するようにする

毎日決まった時間にインデックスを更新するためには、crontabを用います。まず適当なファイル(make_index.sh)を作り、
vi /root/make_index.sh
例えば以下のようにシェルスクリプトを書きます。
#!/bin/sh       
LANG=ja_JP.EUCJP
mknmz -a --deny='index.html|itiran.html' -O /var/lib/namazu/index/ /var/www/html/ 

そして、パーミッションを変更
chmod u+x make_index.sh
一度、試してみましょう。
/root/make_index.sh
うまくいっていれば
crontab -e
として
00 00 * * * /root/make_index.sh
を書き加えます。これは毎日00:00にインデックスを作る場合です。(くわしくはcrontabを参照)

辞書にmecabを使う

MeCabはkakasiより分かち書きが強い。以下からダウンロード/インストールする
MeCab

mknmzrcに
$MECAB ="/usr/local/bin/mecab -O wakati";
を書き加える。また、 mknmzするときに-bを追加するとmecabでインデックスを作る。
mknmz -abO /var/lib/namazu/index/ /var/www/html/

特定のディレクトリを検索から除外する

mknmz --exclude="除外ディレクトリ"