fessをサブディレクトリにインストールする方法について

fess:13.6.3
elasticsearch:7.6.2
公式docker-compose.yml使用

fess13をリバースプロキシ経由でアクセスするために、
fessをサブディレクトリにインストールしたいと考えております。
すなわち、fessトップページに
http://server:port/
でアクセスするのではなく、
http://server:port/fess
でアクセスするようにインストールしたいのです。
そのために、fess.in.shに以下を追記してみました。
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.context.path=/fess/"
これでおおよそ思い通りの動作にはなったのですが、
・adminのセッションが数分でタイムアウトしてしまい、再ログイン要求される。
・クロールが途中で止まってしまう。
という現象になりました。後者は、fess-crawler.logを見ると、クロールの途中以降
ログも出ず、クロールが終了しないことから判断しました。

そこで、まずはapp/WEB-INF/web.xml のセッションタイムアウトの
コメントアウトを解除してみましたが、効果はありませんでした。

3600000

対処方法はありますか。

デフォルトは30分維持されるので、数分で終了するとなると、
セッションの設定がおかしいようにも思うので、Cookieのパスなどを
確認するのが良いと思います。

クロールがログをはかずに死ぬようなケースだと、OSのOOM Killerとかに
殺されている可能性があると思うので、メモリが十分かなどを
確認するのが良いと思います。

shinsukeさん、ご示唆ありがとうございます。
Cookieのパスは、
fess.context.path=/fess/ の場合、Path=/fess
fess.context.path=/ の場合、Path=/
ということで両者に差がありました。
Path=/ で正しい動作になるということですから、何らかの方法で
fess.context.path=/fess/ の場合でも Path=/ になるように
できればセッションタイムアウトの問題は解決するということですか。

クロールが中断する件は、当方でも当初メモリを疑い、
稼働OSの割り当てメモリを8GBから12GBに増やしてみたり、
vm.max_map_count=393216
とjavaの割り当てを増やしたりしてみてはいるのですが、
効果はありませんでした。
fess.context.path=/ の場合は最後までクロール出来ていますから、
fess.context.pathが「/」の場合と「/fess/」の場合とで
メモリの使用量が大きく変わるというのが釈然としません。

過去の質問とかでも同じように回答している気もしますが、
コンテキストパスの変更とかは、商用とかではApacheなどの
リバースプロキシでやったりするので、fess.context.pathによる変更は
コミュニティベースの動作確認しかされていないと思います。
なので、Apacheやnginxなどによるリライトを推奨しています。

クロールの話はコンテキストパスの話とは関係なさそうに
見えますが、デバッグログとかにしてクロールして確認すると
良いと思います。

fess.context.pathを設定すると、adminのセッションが2分で切れるのではなく、
fessサーバが2分毎に再起動しているということが判りました。
server_0.log, server_1.log, server_2.log と2分ごとにログが出力されます。
このログの中身は、デフォルトでインストールした場合のログと大差ありません。
クロールが途中で止まる原因も、fessサーバの再起動のタイミングで止まっている
ということだと思います。

fess.context.pathは非推薦とのことですが、2分毎の再起動が解決すれば
このまま使えそうな気がします。

自己解決しました。
/usr/share/fess/run.sh

STATUS=curl -w '%{http_code}\n' -s -o /dev/null http://localhost:8080/json/ping
という記述があり、これを
STATUS=curl -w '%{http_code}\n' -s -o /dev/null http://localhost:8080/fess/json/ping
に修正したところ、解決しました。
いろいろお世話になりました。

なるほど、ありがとうございます。
run.shを修正しておきます。

こちらですがrun.shで/etc/default/fessのFESS_CONTEXT_PATH
を書き換えていないためcompose.ymlのenvironmentに
FESS_CONTEXT_PATHを設定すると同現象が発生しているようです。

書き換える処理を入れると動くようです。
fess:13.11.0で確認しました。

ありがとうございます。修正を入れておきます。

1 Like