テキストファイルなどの全文検索システムNamazu を Debian GNU/Linux Wheezyで使う。
環境
前提
インストール
パッケージでインストールする。なお、以下では不十分な可能性があるので注意。
% sudo aptitude install namazu2 namazu2-index-tools kakasi libtext-kakasi-perl libnkf-perl
インデックス格納ディレクトリおよびCGIディレクトリの作成
% mkdir -p /var/namazu/index % mkdir -p /var/namazu/www
インデックス作成時設定ファイルの編集
% cd /etc/namazu % sudo cp -p mknmzrc mknmzrc.org % sudo vi mknmzrc
差分は以下のとおり。なお、メールファイル(.eml)も検索対象にはいっているが最後のセミコロンが欲しかったのでコメントアウトしただけ。
% diff mknmzrc.org mknmzrc 10a11,12 > $ADDRESS = '自分のメールアドレス'; > 21a24 > $HTML_SUFFIX = "html?|[ps]html|html\\.[a-z]{2}"; 29,32c32,35 < # $ALLOW_FILE = ".*\\.(?:$HTML_SUFFIX)|.*\\.txt" . # HTML, plain text < # "|.*\\.gz|.*\\.Z|.*\\.bz2" . # Compressed files < # "|.*\\.pdf|.*\\.ps" . # PDF, PostScript < # "|.*\\.tex|.*\\.dvi" . # TeX, DVI --- > $ALLOW_FILE = ".*\\.(?:$HTML_SUFFIX)|.*\\.txt" . # HTML, plain text > "|.*\\.gz|.*\\.Z|.*\\.bz2" . # Compressed files > "|.*\\.pdf|.*\\.ps" . # PDF, PostScript > "|.*\\.tex|.*\\.dvi" . # TeX, DVI 46c49 < # "|.*\\.eml|\\d+|[-\\w]+\\.[1-9n]"; # Mail/News, man --- > "|.*\\.eml|\\d+|[-\\w]+\\.[1-9n]"; # Mail/News, man 54a58 > $DENY_FILE = ".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*";
namazu および namazu.cgi の設定ファイルの編集
% sudo cp -p namazurc namazurc.org % sudo vi namazurc
差分は以下のとおり
% diff namazurc.org namazurc 15a16 > Index /var/namazu/index 22a24 > Template /usr/share/namazu/template 49a52 > Replace /var/namazu/www/ http://hogehoge.jp/namazu/ 56a60 > Logging on 70a75 > Lang ja 112c117 < #ContentType "text/html; charset=EUC-JP" --- > ContentType "text/html; charset=EUC-JP" 130c135 < #Charset "ja" "EUC-JP" --- > Charset "ja" "EUC-JP"
インデックスの作成
事前に mknmz コマンドでインデックスを作成し、そのインデックスをnamazuコマンドが検索する。nkmnzの標準出力や標準エラー出力は、EUC-JPなので、nkf を使って UTF-8 に変換する。
% cd /var/namazu/index % sudo mknmz /home/hogehoge/ -O /var/namazu/index |& nkf -w
そのインデックスを使って検索できるか確かめる。以下の例では「test」という文字列を検索している。
% namazu test /var/namazu/index |& nkf -w
CGIの設置
事前に Apache のインストールは終わっているものとする。まず、CGIプログラムを設置する。
% cd /var/namazu/www % sudo ln -s /usr/lib/cgi-bin/namazu.cgi . % sudo touch .htaccess
.htaccessの中身は以下のとおり。
% more .htaccess AddHandler cgi-script .cgi
ヘッダーファイルを修正する
% cd /var/namazu/index % sudo cp -p NMZ.head.ja NMZ.head.ja.org % sudo vi NMZ.head.ja
差分は以下のとおり。ヘッダ部分に文字コードの指定を追加するのと、検索CGIへのリンクにパラメーター「idxname=index」を追加する。
% diff NMZ.head.ja.org NMZ.head.ja 6a7 > <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-jp"> 42c43,45 < <a href="{cgi}">[<日本語部分なので文字化けする>]</a> --- > <input type="hidden" name="idxname" value="index"> > <!-- <a href="{cgi}">[<日本語部分なので文字化けする>]</a> //--> > <a href="{cgi}?idxname=index">[<日本語部分なので文字化けする>]</a>
/etc/apache2/sites-available/default などに以下を追記する。
Alias /namazu /var/namazu/www <Directory /var/namazu/www> Options ExecCGI FollowSymLinks MultiViews Includes AllowOverride All Order allow,deny allow from 192.168.11. </Directory>
そして、Apacheを再起動する。
% sudo /etc/init.d/apache2 restart
http://hogehoge.jp/namazu/namazu.cgi?idxname=index にアクセスしてみる。
インデックスの定期更新
CentOSで自宅サーバー構築: サイト内検索システム構築(Namazu)にあるスクリプトをcrontabで動かす。なお、私の環境では、ロケールの設定部分をコメントアウトする必要があった。
上記のスクリプトを mknmz.sh としたとき以下のように設置する。
% sudo mv mknmz.sh /etc/namazu % sudo chmod 700 /etc/namazu/mknmz.sh % sudo crontab -u root -e
以下を加える。毎日午前3時にインデックスを作り直すという設定。
0 3 * * * /etc/namazu/mknmz.sh /home/hogehoge/ /var/namazu/index/ > /dev/null 2>&1