Fess は、Google の検索サイトに似たインターフェイスを社内に簡単に提供できる。HTML、Word、Excel、zipファイル、画像などの数多くのフォーマットに対応している。Fessはバックエンドの全文検索エンジンとして OpenSearch あるいは Elasticsearch を利用可能となっている。

OpenSearch のインストール

OpenSearch と Fess をインストールし、全文検索サーバーを構築する。

OpenJDK のインストール

Fess の公式サイトで確認できる最新の安定板で使用しているOpenJDK のバージョン21を使用する。

Bash
dnf install -y java-21-openjdk
java --version

複数のJavaがインストールされている場合は alternatives コマンドで切り替える。

Bash
alternatives --config java

There are 3 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/java-25-openjdk/bin/java
 + 2           java-21-openjdk.x86_64 (/usr/lib/jvm/java-21-openjdk-21.0.10.0.7-1.el9.alma.1.x86_64/bin/java)
*  3           java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.18.0.8-1.el9.alma.1.x86_64/bin/java)

Enter to keep the current selection[+], or type selection number:

OpenSearch のリポジトリを設定

リポジトリを設定する。今回はFess のバージョン15を入れるため、Opensearch のバージョン3.5を入れる。

Bash
curl -SL https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/opensearch-2.x.repo -o /etc/yum.repos.d/opensearch-2.x.repo

リポジトリの内容は以下の通り。手動でopensearch-3.x.repoを作成して保存しても良い。

Bash
[opensearch-2.x]
name=OpenSearch 2.x
baseurl=https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/yum
enabled=1
repo_gpgcheck=1
gpgcheck=1
gpgkey=https://artifacts.opensearch.org/publickeys/opensearch.pgp
autorefresh=1
type=rpm-md

入手可能なOpenSearchのパッケージを確認する。

Bash
dnf list opensearch -y --showduplicates | grep x86_64

OpenSearch のインストール

OpenSearch は管理者用のパスワードを環境変数に設定した状態でインストールする。

Bash
export OPENSEARCH_INITIAL_ADMIN_PASSWORD='$tr0ngP@$$w0rd'
dnf install -y opensearch-2.15.0

YAML ファイルの記述

/etc/opensearch/opensearch.ymlを編集して以下の箇所を設定する。

Bash
cluster.name: cl01
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node
configsync.config_path: /var/lib/opensearch/data/config/
plugins.security.disabled: true

また、プラグインをopensearchのバージョンに合わせてインストールする。

Bash
cd /usr/share/opensearch/bin/
./opensearch-plugin install --batch org.codelibs.opensearch:opensearch-analysis-fess:2.15.0
./opensearch-plugin install --batch org.codelibs.opensearch:opensearch-analysis-extension:2.15.0
./opensearch-plugin install --batch org.codelibs.opensearch:opensearch-minhash:2.15.0
./opensearch-plugin install --batch org.codelibs.opensearch:opensearch-configsync:2.15.0

サービスを起動する。

Bash
systemctl start opensearch
systemctl enable opensearch

OpenSearchのヒープ調整

Java仮想マシンのヒープメモリサイズを設定する。ヒープサイズを設定することにより、アプリが使用するメモリの大きさが固定され、OSのスワップが起こりにくくなる。
ヒープサイズの大きさは物理メモリのおよそ50%程度に設定することが推奨されているが、8GB程度だと実際には3GBに設定した方が安定すると言われている。
-Xms3gは初期サイズ、-Xmx3gは最大ヒープサイズの設定。

Bash
vi /usr/share/fess/app/elasticsearch/config/jvm.options
Bash
-Xms3g
-Xmx3g

fessインストール

公式ページから最新バージョンを確認。
rpmパッケージをダウンロードして配置する。

Bash
wget https://github.com/codelibs/fess/releases/download/fess-15.5.0/fess-15.5.0.rpm

rpmパッケージをインストールする。

Bash
dnf install fess-15.5.0.rpm

Fessの設定

Fess の設定ファイル /etc/sysconfig/fess を編集する。FESS_DICTIONARY_PATH に、openserach.ymlファイルで指定した configsync.config_path に設定したディレクトリを記述する。 FESS_PORT に指定している8080は Fess の管理画面にアクセスする際のポート番号。SEARCH_ENGINE_HTTP_URLで OpenSearch サーバーのURLを記載する。

Bash
################################
# Fess
################################

# Fess Path
FESS_TEMP_PATH=/var/tmp/fess
FESS_LOG_PATH=/var/log/fess
FESS_CONF_PATH=/etc/fess
FESS_VAR_PATH=/var/lib/fess

FESS_DICTIONARY_PATH=/var/lib/opensearch/config/

# Port
FESS_PORT=8080

# Heap Memory
FESS_HEAP_SIZE=512m

# Elasticsearch Path
SEARCH_ENGINE_HOME=/usr/share/opensearch/

# Elasticsearch URL
SEARCH_ENGINE_HTTP_URL=http://localhost:9200

次に、Fess の設定ファイル /etc/fess/fess_config.properties を編集する。設定ファイル内のsearch_engine.http.urlにOpenSearchサーバーのURLを指定する。ポートは9200を指定する。
search_engine.typeはopensearchを指定する。

Bash
# Search Engine
search_engine.type=opensearch
search_engine.http.url=http://localhost:9200
...

/usr/share/fess/bin/fess.in.sh を編集して以下の設定を追加あるいは変更する。

Bash
# External opensearch cluster
SEARCH_ENGINE_HTTP_URL=http://localhost:9200
FESS_DICTIONARY_PATH=/var/lib/opensearch/config/

Fessのサービスを再起動する。

Bash
systemctl statt fess
systemctl enable fess

これで、ブラウザから8080番ポートで接続すると管理画面が表示される。

管理画面の初期ユーザー/パスワードはadmin/adminです。

ログイン後の設定については別の記事に記載します。