シェルログインが必要なので、スタンダードプラン以上が必須条件。
さくらはFreeBSDですがNamazuのインストール方法自体は、概ね他のLinux OSと同じだと思われます。
しかし、自前のマシンではなく、共用サーバなので自分のユーザディレクトリ内にインストールするようconfigureオプションを付け加える必要があります。
とりあえず、作業手順を箇条書き。
- gettextとnkfがインストールされていることを確認
- KAKASIのインストール
- KAKASIへパスを通す
- File::MMagicのインストール
- Namazuのインストール
- 設定ファイル編集
- インデックス作成
- 確認
では早速。
1:gettextとnkfがインストールされていることを確認
%which nkf
/usr/local/bin/nkf
%which gettext
/usr/local/bin/gettext
ありますので次の手順へ進みます。
2:KAKASIのインストール
%wget http://kakasi.namazu.org/stable/kakasi-2.3.4.tar.gz
%tar xvfz kakasi-2.3.4.tar.gz
%cd kakasi-2.3.4
%./configure --prefix=/home/USER/local
%make
%make install
"USER"は自分のアカウント名に入れ替えること(以下同じ)
3:KAKASIへパスを通す
KAKASIへパスが通っていないと、Namazuのインストール時にKAKASIを見つけてくれず、インデックスを作成出来ません。なので、KAKASIがあるディレクトリ(この場合は~/local/bin/)へパスを通すように~/.loginを編集します。
%vi ~/.login
set path = ($HOME/local/bin)
粗方省略してしまっていますが、.loginのset pathへパスを記述してログインし直せばパスが通るようになります。
確認してみましょう。
%which kakasi
/home/USER/local/bin/kakasi
4:File::MMagicのインストール
File::MMagicはNamazuのtarballに含まれています。
%wget http://www.namazu.org/stable/namazu-2.0.14.tar.gz
%tar xvfz namazu-2.0.14.tar.gz
%cd namazu-2.0.14
%cd File-MMagic
%perl Makefile.PL LIB=/home/USER/local/lib INSTALLMAN3DIR=/home/USER/local/man
%make
%make install
次にNamazu本体をインストールします。一つ上のディレクトリへ戻っておきましょう。
%cd ../
5:Namazuのインストール
さくらはFreeBSDなのでconfigureオプションに--disable-sharedを付けます。
%./configure --disable-shared --prefix=/home/USER/local/namazu --with-pmdir=/home/USER/local/lib --with-libintl-prefix=/usr/local
%make
%make install
ここまで特にエラーが出なければ問題なくインストールされているはず。
確認。
~/local/namazu/bin/mknmz -C
mknmzを-Cオプションで実行すると現在の設定を表示します。KAKASIが正常にインストールされていないと、ここで"KAKASI: no"などと表示されます。
重要なファイルへのパスは
- mknmzは
~/local/namazu/bin/mknmz
- namazu.cgiは
~/local/namazu/libexec/namazu.cgi
- 設定ファイルのディレクトリは
~/local/namazu/etc/namazu/
- Indexのディレクトリは
~/local/namazu/var/namazu/index
こんなところですか。
実際に検索を行う際に使用するのはnamazu.cgiなので、~/www以下の任意の場所へコピーしておきましょう。例えば‥
%cp ~/local/namazu/libexec/namazu.cgi ~/www/namazu
6:設定ファイル編集
設定ファイルのディレクトリは~/local/namazu/etc/namazu/ですので移動しておきます。
%cd ~/local/namazu/etc/namazu/
lsしてみるとmknmzrc-sampleとnamazurc-sampleという2つのファイルがあるはずです。これは設定ファイルのサンプルですので、このファイルを名前変更して使用します。
%cp mknmzrc-sample mknmzrc
%cp namazurc-sample namazurc
通常リネームはmvを使いますが、元のファイルを残したい場合には名前を変更してコピー、ということでcpを使ったりします。
mknmzrcはインデックス化する際の設定、namazurcはnamazu.cgiの設定です。
では編集。
%vi namazurc
Index /home/USER/local/namazu/var/namazu/index
Replace /home/USR/www/ http://USER.sakura.ne.jp/
Lang ja_JP.eucJP
Indexはインデックスの場所の指定。Replaceは実際のパスをURIに置き換えるものです。Langは‥もしかしたらこの設定は要らないかもです。
namazurcは.namazurcというファイル名でnamazu.cgiと同じディレクトリに置いても良いです。
%vi mknmzrc
$ADDRESS = 'postmaster@sakura.ne.jp';
$DENY_FILE = ".*\\.(gif|png|jpg|jpeg|txt|php|cgi|pl|pm|css|js|rdf|xml)|.*\\.tar\\.gz|core|.*\\.bak|.*
~|\\..*|\x23.*";
$ADDRESSは管理者のメールアドレスを入れておきましょう。メールアドレスならなんでも構いません。namazu.cgiによる検索ページ下部に表示されます。
$DENY_FILEはインデックス化しないファイルを指定出来ます。とりあえず検索結果に含めたくないファイルの拡張子を列挙しておくと良いです。
また、ディレクトリごとインデックス化対象から除外する場合は、mknmzrcの$EXCLUDE_PASSへ追加します。
$EXCLUDE_PATH = ".*\\/(data|doc|img|lib|lock|plugin|template|util)\\/.*";
これは今使ってる日記ツールのドキュメントや埋め込み用のhtmlが引っ掛かるのを防ぐために行いました。
7:インデックス作成
インデックスの作成はmknmzで行います。
参考例
%/home/USER/local/namazu/bin/mknmz --html-split --all --output-dir=/home/USER/local/namazu/var/namazu/index/ /home/USER/www/
--html-splitはhtmlのa要素name属性で切り分けてくれるオプションです。
--output-dirはインデックス出力先の指定。
8:確認
先ほど~/www以下へコピーしたnamazu.cgiへブラウザからアクセスしてみます。
確認のポイント。
- 日本語のページが生成されてますか?
- 検索してみて、日本語を含む結果が文字化けしていませんか?
- リンク先のパスはちゃんとURIにReplaceされてますか?
- ページ最下部に設定したメールアドレスが表示されてますか?
こんなもんでしょうか。
おまけ
htmlに書く検索フォームの例。
<form method="get" action="./cgi-bin/namazu.cgi">
<fieldset>
<legend accesskey="n">Namazuによるサイト内全文検索</legend>
<input type="text" name="query" accesskey="t" tabindex="1" size="20" value="" />
<input type="submit" name="submit" tabindex="2" accesskey="s" value="(S)earch!" />
<input type="hidden" name="whence" value="0" />
<input type="hidden" name="lang" value="ja" />
<input type="hidden" name="max" value="20" />
</fieldset></form>
これはxhtmlでの例ですけどね.