猫山さんの日記

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

Fessを試してみよう(3)サムネイルが表示されない

2022-05-31 | 日記

Fessの2回目Crawl所要時間は59分だった。
初回の124分より速いのは、2回目だから?それとも空いていたから?
いずれにしても長い。もっと速くならないかな。
ちょっとログを覗いてみよう。

/var/log/fess/fess-crawler.logに
java.lang.OutOfMemoryError: Java heap spaceが出てる。
デフォルトのままでは不足するようだ。
fessとcrawlerの両方を512mから2gにしたらエラーは出なくなった。
/etc/sysconfig/fess
 FESS_HEAP_SIZE=2g
/etc/fess/fess_config.properties
 jvm.crawler.options=\
 -Xmx2g\n\

Dashboardにload averageが表示されている。
Crawler動作中は3.5くらいになっていることに気づいたので、
仮想プロセッサを2から4に増やした。

/var/log/fess/fess-suggest.logにもエラーが出てる。
org.opensearch.OpenSearchStatusException: OpenSearch exception [type=illegal_state_exception, reason=The number of tokens produced by calling _analyze has exceeded the allowed maximum of [10000]. This limit can be set by changing the [index.analyze.max_token_count] index level setting.]
長い文章にはトークン(キーワード)が10000以上含まれているからだ。
無視してよさそう。

/var/log/fess/fess-thumbnail.log
WARN  msofficeThumbnailGenerator is failed  (exit code:1, timeout:false): [${path}/generate-thumbnail, msoffice, ${url}, ${outputFile}]
同じエラーが大量に出ている。
オフィスファイルすべてにこのエラーが出ている気がする。
LibreOfficeとImageMagickをインストールしないといけないみたい。
https://fess.codelibs.org/ja/14.1/config/thumbnail.html#ms-office
一度インストールしてみて、有用かどうか試そう。
不要ならサムネイル作成自体実行しないようにすればCrawl時間を節約できそう。


Fessを試してみよう(2)検索結果が空っぽ

2022-05-30 | 日記

昨日作ったFessのサーバーを、Hyper-V Server 2019にインポートして起動した。
System->Generalの中のLDAP項目を設定したら、
ドメインユーザーであっさりログインできるようになった。
次にCrawler->File Systemで情報収集したい共有フォルダを指定する。
動作テストだから、ファイル容量が約1GBのフォルダを指定した。
最後にCrawler->File Authenticationで情報収集に使うユーザーを指定すれば、
設定は完了だ。
System->Schedulerの中のDefault Crawlerを実行すると、情報収集が始まった。
System Info->Job Logで情報収集が終わったかどうか確認できる。

5分で情報収集が完了した。
1GBに5分かかっていたら、ファイルサーバー全体だと数日かかるんだけど・・・。
とくかく結果を見てみよう。

検索キーワードを入れてEnter!
真っ白。何もヒットしない。
ネットで調べる限り、設定は間違っていない。
パスの区切り文字を/から\に変えてみるなど、
ちょっと変えてはDefault Crawlerを実行する。
もう何回繰り返したんだろう、嫌になってきた。

パスに記述するホスト名を完全修飾名にしたら出た!
いやー長かった。
まだ問題がある。
adminでログインしないと検索結果が出ない。
再び、設定を変えてはCrawler実行する地獄で苦しんで、
・・・結局、問題点は、パーミッションだった。
デフォルト値は {role}guest なんだけど、これが罠だ。
ちゃんとドメインのユーザーなりグループを指定しないといけない。
デフォルトが空だったらちゃんと入れたのにさ!

結局最小限設定すべき箇所は次の3つだった。
パス smb://hostname.domain/foldername
深さ 5くらい
パーミッション {group}groupname

さあ、設定が終わったので使い勝手を見てみよう。
検索結果をクリックすると、対象ファイルがダウンロードされる。
うーん、それよりファイルの場所を開いてほしいな。
調べたところ、そういう設定はできるけれど、
ブラウザがそれを許してくれないので、無理だった。
ブラウザがファイルにアクセスできたら危険だもんね、仕方ないか。
検索結果にはファイルのパスが表示されるんだけど、
皆切り詰められて肝心な部分が見えない。
カットせずすべて表示できないかな。

JSPを書き換えれば良いそうだ。
「Fess検索結果画面のカスタマイズ」https://bibo-log.info/20200122/
ここに書いてあるとおり、
/usr/share/fess/app/WEB-INF/view/searchResults.jsp
を編集したらうまく表示された。
検索結果の表示はこんなもんかな。

さて、次はもう少し大きなフォルダを検索対象にして、
探し物が見つかるか試そう。
・・・
約30GBのフォルダのCrawlに2時間かかった。
2回目以後は速くなるのかな?
毎日00:00に自動実行されるので、明日結果を見てみよう。


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に乗せて設定しよう。


Rocket.Chatを引っ越そう(2)

2022-05-28 | 日記

引越し準備が完了してから2週間が過ぎてしまった。
DBのdumpを持って帰ったので、リハーサルをしよう。
手順は次のとおりだ。

# Rocket.Chatサービス停止
sudo systemctl stop snap.rocketchat-server.rocketchat-server.service
# リストア
/snap/rocketchat-server/current/bin/mongorestore -d parties parties/ --drop
# Rocket.Chatサービス開始
sudo systemctl start snap.rocketchat-server.rocketchat-server.service

5分ほどでリストアできた。
さあ、ブラウザでアクセスしてみよう。
職場で使っているアカウントでログインしようとしたら、二要素認証を求められた。
そんな設定した覚えないんだけど・・。
Chatのインストール時に作ったユーザーだとどうかな?
良かった、二要素認証は求められず、ログインできた。

会話の履歴を見てみるか。
あれ、履歴が見られない、というか中に入れない。
「Roomが見つかりません
このルームが存在していないか、アクセスする権限がありません」
どういうこと?
管理メニューでRoomを見てみると、Roomはひとつもない!

リストア時の標準出力内容を見てみると、
Failed: parties.rocketchat_room: error creating collection parties.rocketchat_room: error running create command: (NamespaceExists) a collection 'parties.rocketchat_room' already exists
と表示されていた。
検索してみても、それらしい情報はなかなか見つからない。
IPアドレスが本番と違うせいかな?
本番と同じにしよう
sudo vi /etc/netplan/00-installer-config.yaml

でもって、もう一度DBリストア
sudo systemctl stop snap.rocketchat-server.rocketchat-server.service
/snap/rocketchat-server/current/bin/mongorestore -d parties parties/ --drop
sudo systemctl start snap.rocketchat-server.rocketchat-server.service

ブラウザから接続してみる。
あれ?「このサイトにアクセスできません」になった。
IPアドレスでアクセスしてみると・・・表示された。
Roomもちゃんと表示される。
でも、投稿した画像がどれも表示されない。
nginx経由でログインできないのも気になるし、サーバーを再起動してみよう。
・・・今度はちゃんとアクセスできた。
投稿した画像もちゃんと表示された。
じゃあ、本番に向けて手順をおさらいしよう。
チェックポイントを適用してmongodbリストア前の状態に戻した。

1.IPアドレスを本番と同じに修正して、ubuntu再起動
2.ブラウザからRocket.Chatにログインできることを確認
3.ロケットチャットを停止して
 おっと、mongodbのダンプファイルをアップするのを忘れてた。
4.mongodbをリストアする
あれ、変なエラー出てる
Failed: parties.rocketchat_federation_servers: error dropping collection: write command error: [{write errors: []}, {(ShutdownInProgress) Replication is being shut down}]
フェデレーションって何?
他のサーバーのユーザーと相互にメッセージ交換できるようにする機能みたい。
使ってないし、気にしなくていいかな?
ログインして確認してみると、問題はないように見える。
よし、月曜の定時後に本番だ。


ACアダプタのプラグ不良(2)

2022-05-23 | 日記

ARROWS Tab Q739/ABのACアダプタがもう一個あったので、
こちらも土曜日と同じ要領で接着しよう。
さあ、動作チェックだ。
あれ?本体にプラグが刺さらない!

無理やりねじ込むと充電中になるけれど、
手を離すとプラグが押し戻されて、バッテリー動作中になってしまう。
どうやら中心の棒に接着剤を塗りすぎて、
穴の径が小さくなってしまったようだ。
ピンポンチでちょっと叩いてみよう。
入るようになった。
でも、強く押し込んでおかないと充電中にならない。
まだどこかつっかえているのかな?
さらにピンポンチで叩く。
状況変わらず。
しつこく叩く。
全然変わらない。

何か大きな間違いを犯しているようだ。
強く押し込むと充電中になるということは、
接着剤でマイナス極の接触が悪くなっているのかも。
ラジオペンチで何度かねじりながら接着した筒を引き出して、
USB顕微鏡で覗きながら中心の棒についた接着剤をカッターで削った。
挿しこんだ時の感触は正常になった。
でも、電圧を測ってみると、出ない。
・・・完全に壊してしまったみたいだ。