Hyper Estraierを久々に使った。
estmaster(P2P)のcasketディレクトリと、estcmdのcasketディレクトリとでは構造が違う。マニュアルで同じcasketという名前が使われていて紛らわしい。
estmasterで作ったディレクトリの_node/(nodename)の中にデータベースが入っている。これがestcmdが参照するcasketディレクトリに相当する。
estcmdで検索するときは、estmasterを一旦止めてから、
estcmd search -vh casket/_node/(nodename) '検索文字列'
のようにする。vhは人間に読みやすいフォーマットで出力するオプション。estcallを使うとestmasterと通信ができる。
estcall search http://localhost:1978/node/(nodename) '検索文字列'
estmasterは、複数のデータベースにURIを割り当てて(ノード)、相互に通信できるようにする仕組み。という風に理解した。
Apacheのmod_rewriteを使って、適当なURIでestmasterを公開することができる。
http://example.com/he/
で公開するなら、_confに
# public URL (absolute URL) publicurl: http://example.com/he
と書く。Apache側は、
RewriteEngine on RewriteRule ^/he/(.*) http://localhost:1978/$1 [P]
みたいな感じ。
ここにApache側でBasic認証をかけてはいけない。ApacheとestmasterでBasic認証が二重にかかるために、ブラウザが交互に認証をトライし続けるループ状態になる。
特定のディレクトリだけBasic認証を外す方法は、
に書いた。
_confでpublicurlを書き換えると、管理画面のリンクが書き換わるだけでなく、searchコマンドのレスポンスに含まれる#nodeurlの値などが書き換わる。
外部のestmasterと通信するような場合、内部のノード同士もlocalhostでなく外部に公開されたURIを使ってリンクすべきなんだろうか。ローカルにあるノードが通信するのに、上のような設定で毎回Apacheを通ってしまうとしたら、すごく嫌だ。