猫山さんの日記

写真付きで日記や趣味を書くならgooブログ

Fessを試してみよう(1)インストール

2022-05-29 | 日記

以前から気になっていたFessをセットアップしよう。
OSはMIRACLE Linux 8.4
日本語ドキュメントが整備されていて心強い。
https://fess.codelibs.org/ja/articles/article-1.html
動作環境はUbuntu 18.04とOpenJDK 11.0.8って、ちょっと古いね。
でも、インストール要件については新しくなっている。
Java 17が必要だって。
へー、このサイトは日本語版と英語版を簡単に切り替えられるんだ。
ちょっと覗いてみよう。
英語版だとJavaはAdoptium(Eclipse Temurin)へのリンクが貼ってある。
OracleがJDKを無償に戻したらしいんだけど、どっちがいいのかな。
「Oracle、「Oracle JDK」を再び無料提供へ 本番環境でも利用可」
https://www.itmedia.co.jp/news/articles/2109/15/news147.html

最新のLTSは17か。
dnf install java-17-openjdk-devel
で苦労なくインストールできたので、OpenJDKでいいや。
次はElasticsearchだけど、「組み込みElasticsearchでの稼働は推奨しません。」
だって。Fessに同梱されているのは使わず別途インストールせよということかな?
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.2.2-x86_64.rpm
rpm -ivh elasticsearch-8.2.2-x86_64.rpm
インストールが終わったらメッセージがいっぱい出てきたよ。

Authentication and authorization are enabled.TLS for the transport and HTTP layers is enabled and configured. The generated password for the elastic built-in superuser is : *** If this node should join an existing cluster, you can reconfigure this with '/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token '
after creating an enrollment token on your existing cluster. You can complete the following actions at any time:

Reset the password of the elastic built-in superuser with
'/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic'. Generate an enrollment token for Kibana instances with
 '/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana'. Generate an enrollment token for Elasticsearch nodes with
'/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node'.

-----------------------------------------------------------------------------------------------
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
 sudo systemctl daemon-reload
 sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
 sudo systemctl start elasticsearch.service
[/usr/lib/tmpfiles.d/elasticsearch.conf:1] Line references path below legacy directory /var/run/, updating /var/run/elasticsearch → /run/elasticsearch; please update the tmpfiles.d/ drop-in file accordingly.

公式に設定はまだ待てと書いてあるので、続いてFessをインストールする。
wget https://github.com/codelibs/fess/releases/download/fess-14.1.1/fess-14.1.1.rpm
rpm -ivh fess-14.1.1.rpm
こっちもメッセージたくさん出したよ。

### NOT starting on installation, please execute the following statements to configure fess service to start automatically using systemd
 sudo systemctl daemon-reload
 sudo systemctl enable fess.service
### You can start fess service by executing
 sudo systemctl start fess.service
[/usr/lib/tmpfiles.d/elasticsearch.conf:1] Line references path below legacy directory /var/run/, updating /var/run/elasticsearch → /run/elasticsearch; please update the tmpfiles.d/ drop-in file accordingly.
[/usr/lib/tmpfiles.d/fess.conf:1] Line references path below legacy directory /var/run/, updating /var/run/fess → /run/fess; please update the tmpfiles.d/ drop-in file accordingly.

今は関係なさそうなので、後で見よう。
次はElasticsearch のプラグインを plugins ディレクトリにインストールだって。
/usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-fess:8.2.2.0
/usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-extension:8.2.2.0
/usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-minhash:8.2.2.0

ありゃ、エラーだ。
Exception in thread "main" java.io.FileNotFoundException: https://repo1.maven.org/maven2/org/codelibs/elasticsearch-analysis-minhash/8.2.2.0/elasticsearch-analysis-minhash-8.2.2.0.zip

ファイル名間違ってた。修正してもう一度
/usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-minhash:8.2.2.0
curl -o /tmp/configsync.zip https://repo.maven.apache.org/maven2/org/codelibs/elasticsearch-configsync/8.2.2.0/elasticsearch-configsync-8.2.2.0.zip
mkdir -p /usr/share/elasticsearch/modules/configsync
unzip -d /usr/share/elasticsearch/modules/configsync /tmp/configsync.zip

/etc/elasticsearch/elasticsearch.yml に下記の設定を追加する。
configsync.config_path: /var/lib/elasticsearch/config
xpack.security.enabled: false

インストールはおしまい。起動設定する。
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl enable fess.service

まずelasticsearchから起動。
systemctl start elasticsearch
長いな・・・タイムアウトしちゃった。
Job for elasticsearch.service failed because a timeout was exceeded.
See "systemctl status elasticsearch.service" and "journalctl -xe" for details.
仮想プロセッサを1個から2個へ増やそう。
・・・今度は起動できた。
ブラウザでhttp://localhost:8080/ へアクセス。
「このサイトにアクセスできません」
firewallかな?
firewall-cmd --get-active-zones
アクティブなゾーンは、public
 firewall-cmd --list-all
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload
まだアクセスできない。
firewall止めてみよう。
systemctl stop firewalld
アクセスできた。
うーん?・・・そうか、httpじゃなく8080を開けないといけないんだ。
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
アクセスできた。

チューニング関係を簡単に調べてみよう。
Elasticsearchが使うJVMのヒープサイズはデフォルトのままで良さそう。
https://www.elastic.co/guide/en/elasticsearch/reference/current/advanced-configuration.html#set-jvm-options
Fessの設定では、JVMのヒープサイズは、エラーが出たら対処で良さそうだけど、
クロールするファイルサイズには上限を設定しておいた方が良さそうだ。
vi /etc/fess/fess_config.properties
追加すべき場所がわからないので、末尾に入れておこう。サイズは10MB。
client.maxContentLength=10485760
月曜日、Hyper-V Serverに乗せて設定しよう。