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を割り当てて(ノード)、相互に通信できるようにする仕組み。という風に理解した。


Apachemod_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を通ってしまうとしたら、すごく嫌だ。