このページではWebコンテンツに設置した全文検索エンジンNamazuhttpから利用するための設定について初心者/ビギナー向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
全文検索システムNamazuの構築

全文検索エンジンとは

Namazuのインストール

Namazuのファイル構成

Apacheによる公開設定

索引作成のための設定

mknmzによる索引の作成

検索出力のための設定

namazu.cgiによる検索の実行

出力デザインのカスタマイズ

Namazu検索窓の設置

Namazuの運用のポイント


Namazu索引用データディレクトリの作成

Namazu を利用するには、まず検索のためのデータベースとテンプレートを保存する場所が必要ですので、新規にデータディレクトリを作成します。

データディレクトリを作成する場所は、 Apache により外部からのアクセスが許可されていない場所であれば何処でも構いません。

ただ、かなり頻繁に読み書きが行われるディレクトリですし、 Webブラウザ からのアクセスに関するデータの置き場所なので、 "/var/www/" 以下に作成するのがベターです /varパーティションについて(WBEL3) /varパーティションについて(CentOS3) /varパーティションについて(WBEL4) /varパーティションについて(CentOS4)

ここでは解りやすいように、 "/var/www/namazudata/" としてデータディレクトリを作成します。

また、データベースの出力場所とテンプレートの置き場所を分けておく必要がありますので、そのデータディレクトリの中に "db/" というデータベースディレクトリと "template/" というテンプレートディレクトリを作成しておきます。

そして最後にこれらのディレクトリの所有者を、被検索対象のドキュメントルートと同じく "tanaka" に変更しておきます ドキュメントルートについて

[root@web1 ~]# mkdir /var/www/namazudataEnter mkdirコマンドについて
[root@web1 ~]# mkdir /var/www/namazudata/dbEnter
[root@web1 ~]# mkdir /var/www/namazudata/templateEnter
[root@web1 ~]# chown -R tanaka.tanaka /var/www/namazudataEnter chownコマンドについて
[root@web1 ~]# ls -dl /var/www/namazudataEnter lsコマンドについて
dr-xr-x---  2 tanaka tanaka    4096 3月 29 21:31 /var/www/namazudata
[root@web1 ~]#

「でも、データディレクトリ内を HTTP で参照できなければ、閲覧者が検索結果を読み取れなくなるのでは?。」

と思われるかもしれませんが心配はいりません。なぜならNamazuの索引データベースは閲覧者が直接参照するわけではないからです。

閲覧者がNamazuを利用して検索を行う場合、 CGI プログラムである "namazu.cgi" を利用することになりますが、 "namazu.cgi" はHTTP経由ではなく単純に 構築中のLinuxサーバー 内で索引データベースを参照するだけですから、この参照にはApacheのアクセス制御 Apacheのアクセス制御について は全く意味を持たないわけです。

この意味を勘違いして、データディレクトリに、

<Directory /var/www/namazudata>
 Order Allow,Deny
 Allow from all
</Directory>

のような設定を行うことは、単純に セキュリティ 上の問題を増やしてしまうだけですから気をつけてください。

つまりここで作成したデータディレクトリに対しては、 Apacheによる意図的なアクセス制御設定は不要 、ということになります。

また、データディレクトリの所有者と所有グループは、 仕組みだけ を考えれば変更する必要はありません。 "root" のままでもOKです。

これを敢えて "tanaka" に変更しているのは、このディレクトリ内に保存されるテンプレートファイルや初期設定ファイルの修正や編集に "root" アカウント を使わずに済むように、という安全上の配慮です rootアカウントの危険性について(WBEL3) rootアカウントの危険性について(CentOS3) rootアカウントの危険性について(WBEL4) rootアカウントの危険性について(CentOS4)

さて、Namazuによる検索結果を HTML で表示するために必要なテンプレートファイルの雛形は "/usr/share/namazu/template/" 以下にあります。

この中には日本語用のテンプレートの他に、英語、フランス語、ドイツ語、スペイン語のテンプレートも入っていますが、日本語に表示を限定する場合は末尾に ".ja" が付くファイルだけをテンプレートディレクトリ "/var/www/namazudata/template/" 以下にコピーしておけばOKです。

そして索引データベースを出力する際の初期設定ファイルの雛形である、 "/etc/namazu/mknmzrc" "/var/www/namazudata/" 以下にコピーします。

そしてそれらの所有者、所有グループも上位のデータディレクトリと揃えて "tanaka" に変更しておきましょう。

[root@web1 ~]# cp -a /usr/share/namazu/template/*.ja /var/www/namaz
udata/template/
Enter cpコマンドについて
[root@web1 ~]# cp /etc/namazu/mknmzrc /var/www/namazudata/Enter
[root@web1 ~]# chown -R tanaka.tanaka /var/www/namazudataEnter
[root@web1 ~]#

以上でデータディレクトリの作成はひとまず終了です。

このページの先頭へ↑

namazu.cgiの設置場所の作成

Namazu によるサイト内検索を閲覧者にホームページ上から行ってもらう場合、 CGI 実行ファイルである "namazu.cgi" HTTP から実行できるディレクトリに配置する必要があります。

まず、 Apache CGIの実行許可の設定 を参考に、 "AddHandler" ディレクティブ "*.cgi" を有効なCGI スクリプト に追加してください ApacheのAddHandlerディレクティブの設定

既に何らかの形で、 Webサーバー 上で "*.CGI" による サーバーサイドアプリケーション が実行されている環境であれば、ここは設定済みになっているはずです。

また、 Apache の設定で "/var/www/cgi-bin/" スクリプトエイリアス の設定を有効にしている場合には Apacheのスクリプトエイリアスの設定 デフォルト インストール されている "/var/www/cgi-bin/namazu.cgi" をそのまま利用することができます。

もともと "/var/www/cgi-bin/namazu.cgi" にはデフォルトで "755" パーミッション が与えられていますので パーミッション755のファイルについて 、特にパーミッションの設定をいじらなくても URL

http://www.obenri.com/cgi-bin/namazu.cgi

で検索ページを表示することができるようになります。

もちろん "namazu.cgi" の設置場所は "/var/www/cgi-bin/" 以下でなければならないという理由はありません。

既に "/var/www/cgi-bin/" に他のスクリプトがたくさん置いてあるようなときは、新たに別のディレクトリを作成してスクリプトエイリアスを宣言し、 "namazu.cgi" をそのディレクトリに移動して、Namazu専用の実行ディレクトリとして使用したほうが間違いがないかもしれません。

さて、動作の点だけを考えればスクリプトエイリアスにこだわる必要はなく、例えば "Options ExecCGI" の設定 CGIの実行許可の設定 が有効になっているディレクトリであれば、ドキュメントルート Apacheのドキュメントルートについて 以下に設置してもOKです。

この場合も "namazu.cgi" をそのディレクトリ内に移動して配置することになります。

画面上では見づらいかもしれませんが、これは先頭に ".(ドット)" が付いています ドットファイルについて

また、 "namazu.cgi" は同じディレクトリ内に ".namazurc" が存在すると、それを初期設定ファイルとして利用しますので、雛形ファイルである "/etc/namazu/namazurc" ".namazurc" に改名して同じ実行ディレクトリ内にコピーしておきます。

ここでは例として、Namazu専用の実行ディレクトリ "/var/www/namazu/" を作成して運用することにします。

この場合検索エンジンへのアクセスURLは、

http://www.obenri.com/namazu/namazu.cgi

となります。

所有者、所有グループを変更しているのは、上で説明したデータディレクトリの作成の場合と同じ理由によるものです。
[root@web1 ~]# mkdir /var/www/namazuEnter mkdirコマンドについて
[root@web1 ~]# mv /var/www/cgi-bin/namazu.cgi /var/www/namazu/Enter mvコマンドについて
[root@web1 ~]# cp /etc/namazu/namazurc /var/www/namazu/.namazurcEnter cpコマンドについて
[root@web1 ~]# chown -R tanaka.tanaka /var/www/namazuEnter
[root@web1 ~]#

次に、このディレクトリに対してApacheによるアクセス制御の設定を行います。

Apacheの主設定ファイル "/etc/httpd/conf/httpd.conf" をnanoエディタで開き nanoエディタでファイルを開く 、末尾に次の記述を書き加えてください。記述の意味については、 スクリプトエイリアスの設定について Orderディレクティブの設定について を参考にしてください。

ScriptAlias /namazu/ "/var/www/namazu/"
<Directory /var/www/namazu>
  Order allow,deny
  Allow from all
</Directory>

編集が終わったら、設定ファイルを保存してnanoエディタを閉じてください nanoエディタでファイルを閉じる

ところで、本来であればこういったテスト中のシステムは、動作確認が終わるまでは WAN 側からのアクセスは拒否しておくべきです。

しかしNamazuは クライアント からの書き込みが発生しないシステムですし、コンテンツ上に、

http://www.obenri.com/namazu/namazu.cgi

へのリンクを設置するまでは事実上利用できませんので、最初から公開設定にしておいても問題はないでしょう。

またこのとき、既に "/etc/httpd/conf/httpd.conf" の中身が煩雑になってきているときは、その中に記述する代わりに同じ内容の "namazu.conf" のような名前の テキスト ファイルを新規に作成し、 "/etc/httpd/conf.d/" 以下に保存するとすっきりして良いかもしれません /etc/httpd/cond.d/以下に設定ファイルの一部を保存する方法

設定が終わったら、Apacheの設定ファイルの書式チェックを行い Apacheの書式チェック 、設定の再読み込み操作を行ってください Apacheのコントロールについて

このページの先頭へ↑

ファイルレイアウトの確認とCGIの動作チェック

ちょっと説明が煩雑になりましたので、まとめとしてこのパートで作成したディレクトリとファイルの構造を以下に示します。

ここが正しく構成されていないと、先で躓くことになりますのできちんとチェックしてください。

作成したNamazuの構成ファイル
作成したNamazuの構成ファイル

レイアウトと設定が正しいことが確認できたら、ここでは CGI がきちんと動作できる状態にあるかどうかの確認をやっておきましょう。

ネットワークに接続している任意の クライアント機 Webブラウザ から、

http://www.obenri.com/namazu/namazu.cgi

へアクセスしてみてください。

Namazuの解説書です

CGIの実行のための設定に誤りがなければ、ここで 真っ白なページ が表示されるはずです。

この段階ではまだ何の初期設定も行っていませんので、 "namazu.cgi" は出力するデータが何もないため、こういう結果になるわけです。

もしもここでエラーメッセージが表示される場合にはCGIの設定に関してどこかに誤りがあるはずですので、このパート及び CGIの動作設定について を参考に、関係する設定をもう一度よく確認してみてください。

このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System