| トップ | Solaris | FreeBSD | Gentoo | CentOS | Fedora | Windows | Tips | 自宅サーバの動作確認 | サイト内検索(Namazu) | サイト内検索(HE) |
自サイト内を検索する事の出来る「Namazu」を導入する。
分かち書きには「KAKASI」を利用する。
ここでは
/var/apache2/htdocs/
以下のすべてを検索対象ディレクトリとし、インデックスを
/usr/local/var/namazu/index/crimson-snow/
に作成するものとする。
また、「Perl」の利用時にはgccを利用するものとする。
「Perl」の利用時にgccを利用する方法に関してはこちらを参照。
なお、「Apache」の設定は完了済みとする。
「Namazu」のmakeに必要なものをインストールする。
Solaris# mkdir /usr/local/src/nkf <= 作業用ディレクトリの作成 Solaris# mkdir /usr/local/src/kakasi <= 作業用ディレクトリの作成 Solaris# mkdir /usr/local/src/Text-Kakasi <= 作業用ディレクトリの作成 Solaris# chmod 777 /usr/local/src/* <= 作業用ディレクトリのパーミッション変更 Solaris# exit <= 一般ユーザになる ・「nkf」のインストール Solaris% cd /usr/local/src/nkf Solaris% wget http://keihanna.dl.sourceforge.jp/nkf/15302/nkf205.tar.gz Solaris% gunzip -c nkf205.tar.gz | tar xf - <= ダウンロードしたファイルの展開 Solaris% cd nkf205 <= 展開したディレクトリに移動 Solaris% vi Makefile CC = cc ↓ CC = gcc Solaris% gmake |& tee make.log <= コンパイル Solaris% su <= スーパーユーザになる Password: <= パスワードの入力 Solaris# cp nkf /usr/local/bin/ Solaris# rehash <= パスを通す Solaris# cp nkf.1 /usr/local/man/man1/ Solaris# mkdir -p /usr/local/man/ja/man1 Solaris# nkf -e nkf.1j > /usr/local/man/ja/man1/nkf.1 Solaris# exit <= 一般ユーザになる ・「NKF」のインストール Solaris% cd /usr/local/src/nkf/nkf205/NKF.mod Solaris% perl Makefile.PL Solaris% gmake |& tee make.log <= コンパイル Solaris% su <= スーパーユーザになる Password: <= パスワードの入力 Solaris# gmake install |& tee make-install.log <= インストール ・「KAKASI」のインストール Solaris% cd /usr/local/src/kakasi Solaris% wget http://kakasi.namazu.org/stable/kakasi-2.3.4.tar.gz Solaris% gunzip -c kakasi-2.3.4.tar.gz | tar xf - <= ダウンロードしたファイルの展開 Solaris% cd kakasi-2.3.4 <= 展開したディレクトリに移動 Solaris% ./configure |& tee configure.log Solaris% gmake |& tee make.log <= コンパイル Solaris% su <= スーパーユーザになる Password: <= パスワードの入力 Solaris# gmake install |& tee make-install.log <= インストール ・「Text-Kakasi」のインストール Solaris% cd /usr/local/src/Text-Kakasi Solaris% wget http://search.cpan.org/CPAN/authors/id/D/DA/DANKOGAI/Text-Kakasi-2.04.tar.gz Solaris% gunzip -c Text-Kakasi-2.04.tar.gz | tar xf - <= ダウンロードしたファイルの展開 Solaris% cd Text-Kakasi-2.04 <= 展開したディレクトリに移動 Solaris% perl Makefile.PL Solaris% gmake |& tee make.log <= コンパイル Solaris% su <= スーパーユーザになる Password: <= パスワードの入力 Solaris# gmake install |& tee make-install.log <= インストール |
ここで、「Namazu」に必要な「File::MMagic」を「Namazu」に同梱されているものからインストールする。
Solaris# mkdir /usr/local/src/namazu <= 作業用ディレクトリの作成 Solaris# chmod 777 /usr/local/src/namazu <= 作業用ディレクトリのパーミッション変更 Solaris# exit <= 一般ユーザになる ・「File::MMagic」のインストール Solaris% cd /usr/local/src/namazu Solaris% wget http://www.namazu.org/stable/namazu-2.0.14.tar.gz Solaris% gunzip -c namazu-2.0.14.tar.gz | tar xf - <= ダウンロードしたファイルの展開 Solaris% cd namazu-2.0.14/File-MMagic <= 展開したディレクトリに移動 Solaris% perl Makefile.PL Solaris% gmake |& tee make.log <= コンパイル Solaris% su <= スーパーユーザになる Password: <= パスワードの入力 Solaris# gmake install |& tee make-install.log <= インストール Solaris# exit <= 一般ユーザになる ・「Namazu」のインストール Solaris% cd ../ Solaris% ./configure |& tee configure.log Solaris% gmake |& tee make.log <= コンパイル Solaris% su <= スーパーユーザになる Password: <= パスワードの入力 Solaris# gmake install |& tee make-install.log <= インストール |
インデックス作成ツールの設定
Solaris# cp /usr/local/etc/namazu/mknmzrc-sample /usr/local/etc/namazu/mknmzrc <= サンプル設定ファイルのコピー Solaris# vi /usr/local/etc/namazu/mknmzrc <= インデックス作成ツール設定ファイル編集 # $ADDRESS = 'webmaster@Solaris.crimson-snow.net'; ↓ $ADDRESS = 'kaz@crimson-snow.net'; <= 管理者のメールアドレスを指定 # $DENY_FILE = ".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*"; ↓ $DENY_FILE = ".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*"; <= コメント解除(gif、png、jpg、jpeg等を検索対象としない) # $NKF = "module_nkf"; ↓ $NKF = "module_nkf"; <= コメント解除 # $KAKASI = "module_kakasi -ieuc -oeuc -w"; ↓ $KAKASI = "module_kakasi -ieuc -oeuc -w"; <= コメント解除 # $WAKATI = $KAKASI; ↓ $WAKATI = $KAKASI; <= コメント解除 |
インデックスの作成
Solaris# mkdir /usr/local/var/namazu/index/crimson-snow <= インデックス作成先のディレクトリ作成 Solaris# mknmz -a /var/apache2/htdocs -f /usr/local/etc/namazu/mknmzrc -O /usr/local/var/namazu/index/crimson-snow/ <= インデックス作成 |
WebブラウザからアクセスできるようにCGIを設置する。
CGIの設定
Solaris# cp /usr/local/libexec/namazu.cgi /var/apache2/cgi-bin/ <= CGIファイルのコピー
Solaris# cp /usr/local/etc/namazu/namazurc-sample /usr/local/etc/namazu/namazurc
<= サンプル設定ファイルのコピー
Solaris# vi /usr/local/etc/namazu/namazurc <= 設定ファイル編集
#Replace /home/foo/public_html/ http://www.foo.bar.jp/~foo/
↓
Replace /var/apache2/htdocs/ http://www.crimson-snow.net/ <= 検索対象ディレクトリの置換
#Lang ja
↓
Lang ja_JP.eucJP <= 日本語化
Solaris# vi /usr/local/var/namazu/index/crimson-snow/NMZ.head.ja <= ヘッダファイル編集
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP"> <= 追加(文字化け対策)
<!-- <input type="hidden" name="idxname" value="foobar"> -->
↓
<input type="hidden" name="idxname" value="crimson-snow"> <= インデックス指定
<a href="{cgi}">[検索方法]</a>
↓
<a href="{cgi}?idxname=crimson-snow">[検索方法]</a> <= インデックス指定
|
ブラウザで
http://サーバのIPアドレス/cgi-bin/namazu.cgi?idxname=crimson-snow
とアクセスする。
サイト内に設置する場合
サイト内に検索用のFORMを設置する場合、設置したい場所に以下の内容を記述。
<FORM method="get" action="/cgi-bin/namazu.cgi">サイト内検索
<INPUT type="text" name="query" size="20">
<INPUT type="submit" name="submit" value="Search">
<INPUT type="hidden" name="idxname" value="crimson-snow">
<INPUT type="hidden" name="max" value="20">
<INPUT type="hidden" name="result" value="normal">
<INPUT type="hidden" name="sort" value="score">
</FORM>
|
Solaris# vi ~/namazu.sh <= インデックスの自動作成&不要データ削除スクリプト作成 #!/sbin/sh /usr/local/bin/mknmz -qa /var/apache2/htdocs -f /usr/local/etc/namazu/mknmzrc -O /usr/local/var/namazu/index/crimson-snow/ /usr/local/bin/gcnmz -q /usr/local/var/namazu/index/crimson-snow/ Solaris# chmod 755 ~/namazu.sh <= スクリプトに実行権限付加 |
「nmzidx.pl」の修正
作成したスクリプトではgcnmzを利用しているが、ファイル数またはキーワード数が1000を超えると
Argument "1,571" isn't numeric in subtraction (-) at /usr/local/bin/mknmz line 1996.
といった内容のワーニングが出る。
これは pl/nmzidx.pl の write_status でカンマが入るというバグがある為である。
その為、nmzidx.plファイルを修正する。
Solaris# vi /usr/local/share/namazu/pl/nmzidx.pl <= ファイルの編集
$key = comma($self->{'word'}->{'size'}) if defined $self->{'word'};
↓
$key = $self->{'word'}->{'size'} if defined $self->{'word'}; <= 変更
my $key2 = comma($key); <= 追加
$file = comma($self->{'flist'}->{'valid'}) if defined $self->{'flist'};
↓
$file = $self->{'flist'}->{'valid'} if defined $self->{'flist'}; <= 変更
my $file2 = comma($file); <= 追加
$line =~ s/(\<\!-- FILE --\>).*?\1/$1 $file $1/ if defined $file;
↓
$line =~ s/(\<\!-- FILE --\>).*?\1/$1 $file2 $1/ if defined $file; <= 変更
$line =~ s/(\<\!-- KEY --\>).*?\1/$1 $key $1/ if defined $key;
↓
$line =~ s/(\<\!-- KEY --\>).*?\1/$1 $key2 $1/ if defined $key; <= 変更
|
スクリプトの自動実行
Solaris# crontab -e <= 設定ファイルの編集 00 03 * * * /root/namazu.sh <= 追加(毎日3:00にスクリプト実行) |