目的
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
に保存されます。