1
0

windowsPCで、Docker上にFessサーバを構築してみた。エラー処理編

Last updated at Posted at 2024-09-11

はじめに

Fessを構築してクロールしました。そこで管理画面から障害URLを見てみてください。
image.png

image.png

ここに書かれたものはインデックス付けに失敗しており、Fessの検索結果一覧に表示されないものとなります。
当然、検索したいものもエラーの中に含まれていると思いますのでそれらの障害URLを解消させる方法をお教えします。

もくじ エラーの種類

■拡張子.pptxの検索結果がファイル名ではなく、タイトル名で表示される。
■java.lang.OutOfMemoryError: Java heap space
■1gb以上のファイルをクロールさせる方法
■@がついているファイルやディレクトリがクロール失敗する。

拡張子.pptxの検索結果がファイル名ではなく、タイトル名で表示される。

image.png
Fessでpptxファイルを検索すると、検索結果にはファイル名ではなくタイトル名で表示されます。

画像の例だと[PowerPointプレゼンテーション]と表示されます。
Fessを使うユーザーはファイル名で検索をかける人もいるので、検索結果はファイル名で表示させたい。

コマンドプロンプト起動

docker exec -it fess01 /bin/bash

dockerの上で稼働しているfess01コンテナの中に入ります。
設定ファイルの場所を検索します。
fess_config.propertiesというファイルを編集したいのでコマンドプロンプトで探してもらいます。

find / -name "fess_config.properties"

おそらくCtrl+Vで貼り付けできません。コンテナの中はlinuxになっているので、Ctrl+Shift+Vで貼り付けます。

root@392d5242745d:/usr/share/fess# find / -name "fess_config.properties"
find: ‘/proc/36/task/36/fdinfo’: Permission denied
find: ‘/proc/36/task/37/fdinfo’: Permission denied
find: ‘/proc/36/task/38/fdinfo’: Permission denied
find: ‘/proc/36/task/39/fdinfo’: Permission denied
find: ‘/proc/36/task/40/fdinfo’: Permission denied
find: ‘/proc/36/task/41/fdinfo’: Permission denied
find: ‘/proc/36/task/42/fdinfo’: Permission denied
find: ‘/proc/36/task/43/fdinfo’: Permission denied
find: ‘/proc/36/task/44/fdinfo’: Permission denied
find: ‘/proc/36/task/45/fdinfo’: Permission denied
find: ‘/proc/36/task/46/fdinfo’: Permission denied
find: ‘/proc/36/task/47/fdinfo’: Permission denied
find: ‘/proc/36/task/48/fdinfo’: Permission denied
find: ‘/proc/36/task/49/fdinfo’: Permission denied
find: ‘/proc/36/task/50/fdinfo’: Permission denied
find: ‘/proc/36/task/51/fdinfo’: Permission denied
find: ‘/proc/36/task/52/fdinfo’: Permission denied
find: ‘/proc/36/task/53/fdinfo’: Permission denied
find: ‘/proc/36/task/54/fdinfo’: Permission denied
find: ‘/proc/36/task/61/fdinfo’: Permission denied
find: ‘/proc/36/task/62/fdinfo’: Permission denied
find: ‘/proc/36/task/63/fdinfo’: Permission denied
find: ‘/proc/36/task/64/fdinfo’: Permission denied
find: ‘/proc/36/task/65/fdinfo’: Permission denied
find: ‘/proc/36/task/66/fdinfo’: Permission denied
find: ‘/proc/36/task/67/fdinfo’: Permission denied
find: ‘/proc/36/task/68/fdinfo’: Permission denied
find: ‘/proc/36/task/69/fdinfo’: Permission denied
find: ‘/proc/36/task/70/fdinfo’: Permission denied
find: ‘/proc/36/task/71/fdinfo’: Permission denied
find: ‘/proc/36/task/79/fdinfo’: Permission denied
find: ‘/proc/36/task/80/fdinfo’: Permission denied
find: ‘/proc/36/task/83/fdinfo’: Permission denied
find: ‘/proc/36/task/84/fdinfo’: Permission denied
find: ‘/proc/36/task/85/fdinfo’: Permission denied
find: ‘/proc/36/task/86/fdinfo’: Permission denied
find: ‘/proc/36/task/94/fdinfo’: Permission denied
find: ‘/proc/36/task/95/fdinfo’: Permission denied
find: ‘/proc/36/task/102/fdinfo’: Permission denied
find: ‘/proc/36/task/106/fdinfo’: Permission denied
find: ‘/proc/36/task/107/fdinfo’: Permission denied
find: ‘/proc/36/task/108/fdinfo’: Permission denied
find: ‘/proc/36/task/109/fdinfo’: Permission denied
find: ‘/proc/36/task/110/fdinfo’: Permission denied
find: ‘/proc/36/task/112/fdinfo’: Permission denied
find: ‘/proc/36/task/113/fdinfo’: Permission denied
find: ‘/proc/36/task/114/fdinfo’: Permission denied
find: ‘/proc/36/task/115/fdinfo’: Permission denied
find: ‘/proc/36/task/116/fdinfo’: Permission denied
find: ‘/proc/36/task/117/fdinfo’: Permission denied
find: ‘/proc/36/task/118/fdinfo’: Permission denied
find: ‘/proc/36/task/119/fdinfo’: Permission denied
find: ‘/proc/36/task/120/fdinfo’: Permission denied
find: ‘/proc/36/task/121/fdinfo’: Permission denied
find: ‘/proc/36/task/122/fdinfo’: Permission denied
find: ‘/proc/36/task/123/fdinfo’: Permission denied
find: ‘/proc/36/task/124/fdinfo’: Permission denied
find: ‘/proc/36/task/125/fdinfo’: Permission denied
find: ‘/proc/36/task/126/fdinfo’: Permission denied
find: ‘/proc/36/task/127/fdinfo’: Permission denied
find: ‘/proc/36/task/128/fdinfo’: Permission denied
find: ‘/proc/36/task/135/fdinfo’: Permission denied
find: ‘/proc/36/task/136/fdinfo’: Permission denied
find: ‘/proc/36/task/149/fdinfo’: Permission denied
find: ‘/proc/36/task/585/fdinfo’: Permission denied
find: ‘/proc/36/task/906/fdinfo’: Permission denied
find: ‘/proc/36/task/1859/fdinfo’: Permission denied
find: ‘/proc/36/task/4308/fdinfo’: Permission denied
find: ‘/proc/36/task/4343/fdinfo’: Permission denied
find: ‘/proc/36/task/4380/fdinfo’: Permission denied
find: ‘/proc/36/task/4427/fdinfo’: Permission denied
find: ‘/proc/36/task/4459/fdinfo’: Permission denied
find: ‘/proc/36/task/4504/fdinfo’: Permission denied
find: ‘/proc/36/task/4542/fdinfo’: Permission denied
find: ‘/proc/36/task/5865/fdinfo’: Permission denied
find: ‘/proc/36/task/23465/fdinfo’: Permission denied
find: ‘/proc/36/task/53611/fdinfo’: Permission denied
find: ‘/proc/36/task/6649/fdinfo’: Permission denied
find: ‘/proc/36/task/6650/fdinfo’: Permission denied
find: ‘/proc/36/task/6651/fdinfo’: Permission denied
find: ‘/proc/36/task/6652/fdinfo’: Permission denied
find: ‘/proc/36/task/6676/fdinfo’: Permission denied
find: ‘/proc/36/map_files’: Permission denied
find: ‘/proc/36/fdinfo’: Permission denied
/etc/fess/fess_config.properties

最後の1行が見つかったところです。
見つかった場所のfess_config.propertiesを編集

nano /etc/fess/fess_config.properties

nanoライブラリをインストールしていないならばインストールする。nanoはテキストファイル編集で使います。

apt-get update && apt-get install -y nano

crawler.metadata.name.mapping=\  これを、↓
crawler.metadata.name.mapping= 

title=title:string\n
Title=title:string\n

これを消す

image.png

Ctrl+Oで保存
ファイル名の編集画面になる。Enterで決定。
Ctrl+Zで元の画面に戻る。

クロールしなおせばファイル名が検索結果に出てます。

java.lang.OutOfMemoryError: Java heap space

ヒープメモリの最大値を増やしてあげれば直ります。
メモリ不足で起きています。
dockerに入る。

docker exec -it fess01 /bin/bash

↑で書いた要領でfess_config.propertiesを探す。

nano /etc/fess/fess_config.properties

jvm.crawler.options で -Xmx512m

jvm.crawler.options で -Xmx3g
image.png
3GBに設定 あなたの使用しているPCの物理メモリのサイズによって変えてください。

Ctrl+Oで保存
ファイル名の編集画面になる。Enterで決定。
Ctrl+Zで元の画面に戻る。

クロールしなおして完了

1gb以上のファイルをクロールさせる方法

なぜか、10MG以上のファイルはクロールされない設定になっています。
写真がついているofficeファイルはすぐに10MB超えるので絶対に回避したいエラーですね。

dockerに入る。

docker exec -it fess01 /bin/bash

↑で書いた要領でcontentlength.xmlを探す。

/usr/share/fess/app/WEB-INF/classes/crawler/
ここにあったのでcdで入る。

cd /usr/share/fess/app/WEB-INF/classes/crawler/
nano nano contentlength.xml
  GNU nano 4.8                                       contentlength.xml                                                  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//DBFLUTE//DTD LastaDi 1.0//EN"
        "http://dbflute.org/meta/lastadi10.dtd">
<components namespace="fessCrawler">
        <include path="crawler/container.xml" />

        <component name="contentLengthHelper"
                class="org.codelibs.fess.crawler.helper.ContentLengthHelper" instance="singleton">
                <property name="defaultMaxLength">10485760</property><!-- 10M -->
                <postConstruct name="addMaxLength">
                        <arg>"text/html"</arg>
                        <arg>2621440</arg><!-- 2.5M -->
                </postConstruct>
        </component>
</components>

8行目と11行目を1073741824にしときます。※1GBまでをクロールさせる設定。

Ctrl+Oで保存
ファイル名の編集画面になる。Enterで決定。
Ctrl+Zで元の画面に戻る。

クロールしなおして完了

@がついているファイルやディレクトリがクロール失敗する。

Fessバージョン14.15.0以上にアップデートすれば治ると思います。自分は14.11.x→14.15.0にアップデートしてクロールしなおしたら直りました。

必要なものはバックアップとってください。自分はアプデ後はまたクロールし直しするつもりでしたので、取りませんでした。

全体の流れとして14.11.x(現在のバージョン)を破棄して、14.15.0(アプデしたいバージョン)を再インストールするという流れ。

image.png

画像のごみ箱マークをクリック するとdockerの中が空っぽになります。


Fessとopensearchのバージョンを確認。
今回は14.15.0にバージョンアップさせましょう。
参考 https://fess.codelibs.org/ja/downloads.html
Fess 14.15.0は、 (Java 17, OpenSearch 2.15.0)で動くそうです。

C:\docker-fess-masterを確認
Fessファイルとopensearchファイルの中に該当バージョンがあるか確認します。
image.png

Fess
image.png
opensearch
image.png

2つともありますね。
jdk17はインストールしてなかったらしてください。


C:\docker-fess-masterを確認
Cドライブにおいて無い人はdocker-fess-masterがあるディレクトリまで行って下さい。

image.png
この2つを編集していく。
まずcompose.yamlから。

services:
  fess01:
    image: ghcr.io/codelibs/fess:14.15.0
    # build: ./playwright # use Playwright
    container_name: fess01
    environment:
      - "SEARCH_ENGINE_HTTP_URL=http://es01:9200"
      - "FESS_DICTIONARY_PATH=${FESS_DICTIONARY_PATH:-/usr/share/opensearch/config/dictionary/}"
      # - "FESS_PLUGINS=fess-webapp-semantic-search:14.15.0 fess-ds-wikipedia:14.15.0"
      - "JAVA_OPTS=-Xms5g -Xmx7g"  # Javaヒープメモリの設定を追加
    ports:
      - "8080:8080"
    networks:
      - esnet
    depends_on:
      - es01
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "5"
    restart: unless-stopped

networks:
  esnet:
    driver: bridge

Fessのバージョンを指定してあげるかんじ。
次はcompose-opensearch2.yaml。

services:
  es01:
    image: ghcr.io/codelibs/fess-opensearch:2.15.0
    container_name: es01
    environment:
      - node.name=es01
      - discovery.seed_hosts=es01
      - cluster.initial_cluster_manager_nodes=es01
      - cluster.name=fess-es
      - bootstrap.memory_lock=true
      - node.roles=cluster_manager,data,ingest,ml
      - plugins.security.disabled=true
      - "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
      - "FESS_DICTIONARY_PATH=/usr/share/opensearch/config/dictionary"
      - OPENSEARCH_INITIAL_ADMIN_PASSWORD=065@JMcZ#aBI5T

    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65535
        hard: 65535
    volumes:
      - esdata01:/usr/share/opensearch/data
      - esdictionary01:/usr/share/opensearch/config/dictionary
    ports:
      - 9200:9200
    networks:
      - esnet
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "5"
    restart: unless-stopped

volumes:
  esdata01:
    driver: local
  esdictionary01:
    driver: local

opensearchのバージョンを指定してあげる感じ。

cmdでコマンドうちます。
cd \docker-fess-master
docker compose -f compose.yaml -f compose-opensearch2.yaml up -d

ダウンロード始まる。
終了後 docker内にFessができたことを確認します。
image.png
赤線にバージョンも書いてあります。

Fessにアクセスして@ファイルをクロールしなおしてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0