FessとnginxでPDFを保管する全文検索可能なサーバを構築する

目的

PDFやdocs,xlsxなどを全文検索できるサーバを構築します。 nginxを使い、データにオンラインでアクセスできるようにします。

環境

  • Ubuntu 22.04 LTS

Nginxのセットアップ

Nginxをインストール

Ubuntuにnginxをインストールします。 server_tokensの設定も行うため、nginx-extrasも同時にインストールします。

sudo apt install nginx nginx-extras

Nginxのグローバル設定

/etc/nginx/nginx.confの20行目付近にあるserver_tokens off;をコメントインし、 nginxのバージョンが公開されないようにします。

Sitesの設定

/etc/nginx/sites-available/datastore.confを以下のように編集します。

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/content;

        server_name _;

        add_header  X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";

        autoindex on;
        charset utf-8;

        location = /robots.txt { return 200 "User-agent: *\nDisallow: /\n"; }

        location / {
                autoindex on;
                allow 192.168.0.0/16;
                allow 172.16.0.0/12;
                allow 10.0.0.0/8;
                deny all;
        }
}

location /allowは適切な社内ネットワークなどを指定してください。 外部に公開する場合はdeny allごとこれらを削除し、 Robots系の設定も削除してください。

/var/www/contentにディレクトリを作成し、PDFなどを入れてください。

サイトを有効化し、デフォルトサイトを無効化します。

sudo ln -s /etc/nginx/sites-available/datastore.conf /etc/nginx/sites-enabled/datastore.conf
sudo rm /etc/nginx/sites-enabled/default

Nginxの再起動

設定を反映させるため、nginxを再起動します。

sudo systemctl reload nginx

OpenSearchのインストールと設定

OpenSearch公式ページからdeb形式でOpenSearchをダウンロードするか、aptリポジトリを追加してインストールします。

おすすめはaptリポジトリを使う方法です。

下記コマンドから必要なプラグインを、インストールしますが、 2.10.0の部分はインストールしたOpenSearchのバージョンに合わせてください。

$ sudo /usr/share/opensearch/bin/opensearch-plugin install org.codelibs.opensearch:opensearch-analysis-fess:2.10.0
$ sudo /usr/share/opensearch/bin/opensearch-plugin install org.codelibs.opensearch:opensearch-analysis-extension:2.10.0
$ sudo /usr/share/opensearch/bin/opensearch-plugin install org.codelibs.opensearch:opensearch-minhash:2.10.0
$ sudo /usr/share/opensearch/bin/opensearch-plugin install org.codelibs.opensearch:opensearch-configsync:2.10.0

最後に/etc/opensearch/opensearch.ymlに下記設定を追記します。

configsync.config_path: /var/lib/opensearch/data/config/
plugins.security.disabled: true

Javaのインストール

Fessのクロールに必要なJavaをインストールします。

FessはUbuntu PackagesのJava JREを使うとクラッシュするため、 Temurinを利用します。

公式ドキュメントを参考に、 apt Repositoryを設定し、temurin-17-jreをインストールしてください。

Fessのインストールと設定

Fessのインストールをする前にFessにい外部からアクセスする必要がある場合、 Fessは標準でIPv6のListenを行います。 もし、IPv4をListenさせたい場合は、 /etc/sysctl.confに下記内容を追記してsysctl -pを実行し、 IPv6をシステムで無効にしてください。

net.ipv6.conf.all.disable_ipv6 = 1

FessはGitHubのリリースからdebパッケージをダウンロードしてインストールします。

wget https://github.com/codelibs/fess/releases/download/fess-14.10.1/fess-14.10.1.deb
sudo apt install ./fess-14.10.1.deb

/usr/share/fess/bin/fess.in.sh内の次の2行をコメントインし、内容も修正します。

SEARCH_ENGINE_HTTP_URL=http://localhost:9200
FESS_DICTIONARY_PATH=/var/lib/opensearch/data/config/

OpenSearchとFessを自動起動させる

systemctlで下記のコマンドを投入し、 サービスを開始させ自動起動を有効にします。

sudo systemctl daemon-reload
sudo systemctl restart opensearch.service fess.service
sudo systemctl enable opensearch.service fess.service

Fessの設定を行う

http://localhost:8080/adminにアクセスし、管理画面に入ります。

初期ユーザはadmin:adminです。

スケジューラー設定

System -> SchedulerにJob Schedulerが存在しない場合があります。 初期で何もない場合は、System Info -> Back UpからGitHubで公開されてる初期設定をインポートしてください。

クロールの設定を行う

公式ドキュメントを参考にクロール設定を追加してください。

このNginx設定例ではrobots.txtでクロールを制限しているため、 Config Parametersに下記の設定を投入してください。

crawler.ignore.robots.txt=true
config.ignore.robots.tags=true
client.robotsTxtEnabled=false

また、必要に応じて、インデックス化する最大のファイルサイズを指定してください。 単位はバイトです。

client.maxContentLength=262144000

クロールの実行

System -> SchedulerからDefault Crawlerを開き、 Start nowをクリックすることでクロールが開始されます。

ジョブの進捗はSystem -> Job Logから、 クロール結果はSystem -> Crawling Infoから確認できます。

内部に蓄積されたインデックス済みファイルは、 System -> Searchで空文字を検索することで閲覧できます。

ログについて

Fessのログは/var/log/fess下に出力されます。

Crawlerを呼ぶ前のログはfess.logに、 Crawler自体のログはfess-crawler.logに保存されます。

最終更新 Nov 15, 2023 16:13 PM JST
Built with Hugo
テーマ StackJimmy によって設計されています。