全文検索オープンソースソフトウェア FessをCentOS6.9にインストール

全文検索オープンソースソフトウェア Fessをインストールしてみます

簡単に導入できるという話のオープンソースソフトウェアFessをCentOS6.9環境にインストールしてみましょう。

全文検索とは?

全文検索は、ドキュメントの中から対象のキーワードを検索することです。全文検索エンジンを使って、大量にあるドキュメントデータの中から、対象のキーワードを含むドキュメントデータを検索するものです。

全文検索エンジン

検索技術はいくつかあり、grepコマンドも全文検索の1つです。全文検索エンジンとしては、Elasticsearch、Solr、Groongaなどが情報がインターネット上にあります。namazuなども古くからありますね。

全文検索システムFess

FessはJavaベースで動作する全文検索システムです。

  • システム構築が容易
  • Javaが動けばOSに依存しない
  • 検索エンジンとしてElasticsearchを使用している/
  • 独自のクロールエンジン(Fess Crawler)を搭載している
  • ファイルシステムも検索対象にすることができる
  • MS Office系ファイルも検索対象にすることができる
  • Fess管理UIからクロール設定ができる/
  • Json形式での結果出力連携ができる

Fess公式サイト
http://fess.codelibs.org/ja/

インストールは下記のガイドに従って実行しています。
https://fess.codelibs.org/ja/11.4/install/install.html

Fessのインストール準備

FessはJavaベースのシステムです。Fessを実行するには、Java 8以上をインストールする必要があります。
Javaがインストールされていない場合は、javaをインストールします。

# java -version

ここでの例では、yumコマンドでインストールします。

[root@69-vaiop-100 ~]# yum install java-1.8.0-openjdk
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package java-1.8.0-openjdk.i686 1:1.8.0.151-1.b12.el6_9 will be インストール
--> 依存性の処理をしています: java-1.8.0-openjdk-headless = 1:1.8.0.151-1.b12.el6_9 のパッケージ: 
インストール:
  java-1.8.0-openjdk.i686 1:1.8.0.151-1.b12.el6_9    

****長いので略****                                              

依存性関連をインストールしました:
  alsa-lib.i686 0:1.1.0-4.el6                              fontconfig.i686 0:2.8.0-5.el6           
  freetype.i686 0:2.3.11-17.el6                            giflib.i686 0:4.1.6-3.1.el6             
  java-1.8.0-openjdk-headless.i686 1:1.8.0.151-1.b12.el6_9 jpackage-utils.noarch 0:1.7.5-3.16.el6  
  libICE.i686 0:1.0.6-1.el6                                libSM.i686 0:1.2.1-2.el6                
  libX11.i686 0:1.6.4-3.el6                                libX11-common.noarch 0:1.6.4-3.el6      
  libXau.i686 0:1.0.6-4.el6                                libXext.i686 0:1.3.3-1.el6              
  libXfont.i686 0:1.5.1-2.el6                              libXi.i686 0:1.7.8-1.el6                
  libXrender.i686 0:0.9.10-1.el6                           libXtst.i686 0:1.2.3-1.el6              
  libfontenc.i686 0:1.1.2-3.el6                            libjpeg-turbo.i686 0:1.2.1-3.el6_5      
  libpng.i686 2:1.2.49-2.el6_7                             libxcb.i686 0:1.12-4.el6                
  ttmkfdir.i686 0:3.0.9-32.1.el6                           tzdata-java.noarch 0:2017c-1.el6        
  xorg-x11-font-utils.i686 1:7.2-11.el6                    xorg-x11-fonts-Type1.noarch 0:7.2-11.el6

完了しました!
[root@69-vaiop-100 tmp]# java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK Server VM (build 25.151-b12, mixed mode)

Fessをダウンロードする

下記からFessのモジュールのバージョンとURLを確認します。

https://github.com/codelibs/fess/releases

確認したURLからモジュールをダウンロードします。インストール方法がいくつかあるようですが、ここではrpmファイルをダウンロードしてインストールします。2017年12月23日時点では https://github.com/codelibs/fess/releases/download/fess-11.4.5/fess-11.4.5.rpm でした。
また、rpmでインストールする場合は、Elasticsearchも先にインストールしておく必要がありますのでダウンロードしておきます。

Elasticsearchダウンロード
https://www.elastic.co/downloads/elasticsearch

[root@centos69-vaiop-100 ~]# cd /tmp
[root@centos69-vaiop-100 tmp]# wget https://github.com/codelibs/fess/releases/download/fess-11.4.5/fess-11.4.5.rpm
--2017-12-23 18:47:32--  https://github.com/codelibs/fess/releases/download/fess-11.4.5/fess-11.4.5.rpm
github.com をDNSに問いあわせています... 192.30.255.112, 192.30.255.113
github.com|192.30.255.112|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://github-production-release-asset-2e65be.s3.amazonaws.com/12801725/7b760a04-dd34-11e7-9386-f8d23eb2bf61?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20171223%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20171223T094659Z&X-Amz-Expires=300&X-Amz-Signature=0e1867b289fd6bf52ef9bb0730aa924b3109dece8c76354dfb2d279be1f7944c&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dfess-11.4.5.rpm&response-content-type=application%2Foctet-stream [続く]
--2017-12-23 18:47:33--  https://github-production-release-asset-2e65be.s3.amazonaws.com/12801725/7b760a04-dd34-11e7-9386-f8d23eb2bf61?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20171223%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20171223T094659Z&X-Amz-Expires=300&X-Amz-Signature=0e1867b289fd6bf52ef9bb0730aa924b3109dece8c76354dfb2d279be1f7944c&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dfess-11.4.5.rpm&response-content-type=application%2Foctet-stream
github-production-release-asset-2e65be.s3.amazonaws.com をDNSに問いあわせています... 52.216.99.139
github-production-release-asset-2e65be.s3.amazonaws.com|52.216.99.139|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 126627798 (121M) [application/octet-stream]
`fess-11.4.5.rpm' に保存中

100%[==========================================================>] 126,627,798 10.4M/s 時間 30s     

2017-12-23 18:48:04 (4.06 MB/s) - `fess-11.4.5.rpm' へ保存完了 [126627798/126627798]

[root@centos69-vaiop-100 tmp]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.1.rpm
--2017-12-23 18:50:47--  https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.1.rpm
artifacts.elastic.co をDNSに問いあわせています... 2406:da00:ff00::36eb:5282, 2406:da00:ff00::36e1:bc06, 2406:da00:ff00::36f3:6c29, ...
artifacts.elastic.co|2406:da00:ff00::36eb:5282|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 28410541 (27M) [application/octet-stream]
`elasticsearch-6.1.1.rpm' に保存中

100%[==========================================================>] 28,410,541  2.53M/s 時間 15s     

2017-12-23 18:51:03 (1.78 MB/s) - `elasticsearch-6.1.1.rpm' へ保存完了 [28410541/28410541]

Fessをインストール

Fessをインストールします。その前にElasticsearchをインストールします。

Elasticsearchをインストールと設定

[root@centos69-vaiop-100 tmp]# rpm -ivh elasticsearch-6.1.1.rpm 
警告: elasticsearch-6.1.1.rpm: ヘッダ V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
準備中...                ########################################### [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
   1:elasticsearch          ########################################### [100%]
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using chkconfig
 sudo chkconfig --add elasticsearch
### You can start elasticsearch service by executing
 sudo service elasticsearch start
[root@centos69-vaiop-100 tmp]# vi /etc/elasticsearch/elasticsearch.yml

次の2行を追加します。
configsync.config_path: /var/lib/elasticsearch/config
script.engine.groovy.inline.update: on

Fessをインストール

[root@centos69-vaiop-100 tmp]# rpm -ivh elasticsearch-6.1.1.rpm 
警告: elasticsearch-6.1.1.rpm: ヘッダ V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
準備中...                ########################################### [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
   1:elasticsearch          ########################################### [100%]
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using chkconfig
 sudo chkconfig --add elasticsearch
### You can start elasticsearch service by executing
 sudo service elasticsearch start
[root@centos69-vaiop-100 tmp]# vi /etc/elasticsearch/elasticsearch.yml
[root@centos69-vaiop-100 tmp]# rpm -ivh fess-11.4.5.rpm 
準備中...                ########################################### [100%]
Creating fess group... OK
Creating fess user... OK
   1:fess                   ########################################### [100%]
### NOT starting on installation, please execute the following statements to configure fess service to start automatically using chkconfig
 sudo chkconfig --add fess
### You can start fess service by executing
 sudo service fess start

Elasticsearchプラグインをインストール

Fessでelasticsearchを使用するため機能を拡張するためのプラグインをelasticsearchのpluginsディレクトリにインストールします。

実行するのは以下のコマンドです。

/usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-fess:5.6.2
/usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-ja:5.6.1
/usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-synonym:5.6.1
/usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-configsync:5.6.1
/usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-dataformat:5.6.1
/usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-langfield:5.6.1
/usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-minhash:5.6.1
[root@centos69-vaiop-100 tmp]# /usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-fess:5.6.2
-> Downloading org.codelibs:elasticsearch-analysis-fess:5.6.2 from maven central
[=================================================] 100%   
Warning: sha512 not found, falling back to sha1. This behavior is deprecated and will be removed in a future release. Please update the plugin to use a sha512 checksum.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessDeclaredMembers
* java.lang.RuntimePermission getClassLoader
* java.lang.reflect.ReflectPermission suppressAccessChecks
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
-> Installed analysis-fess
[root@centos69-vaiop-100 tmp]# /usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-ja:5.6.1
-> Downloading org.codelibs:elasticsearch-analysis-ja:5.6.1 from maven central
[=================================================] 100%   
Warning: sha512 not found, falling back to sha1. This behavior is deprecated and will be removed in a future release. Please update the plugin to use a sha512 checksum.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessDeclaredMembers
* java.lang.RuntimePermission getClassLoader
* java.lang.reflect.ReflectPermission suppressAccessChecks
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
-> Installed analysis-ja
[root@centos69-vaiop-100 tmp]# /usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-synonym:5.6.1
-> Downloading org.codelibs:elasticsearch-analysis-synonym:5.6.1 from maven central
[=================================================] 100%   
Warning: sha512 not found, falling back to sha1. This behavior is deprecated and will be removed in a future release. Please update the plugin to use a sha512 checksum.
-> Installed analysis-synonym
[root@centos69-vaiop-100 tmp]# /usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-configsync:5.6.1
-> Downloading org.codelibs:elasticsearch-configsync:5.6.1 from maven central
[=================================================] 100%   
Warning: sha512 not found, falling back to sha1. This behavior is deprecated and will be removed in a future release. Please update the plugin to use a sha512 checksum.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.io.FilePermission <> read,write
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
-> Installed configsync
[root@centos69-vaiop-100 tmp]# /usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-dataformat:5.6.1
-> Downloading org.codelibs:elasticsearch-dataformat:5.6.1 from maven central
[=================================================] 100%   
Warning: sha512 not found, falling back to sha1. This behavior is deprecated and will be removed in a future release. Please update the plugin to use a sha512 checksum.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission getClassLoader
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
-> Installed dataformat
[root@centos69-vaiop-100 tmp]# /usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-langfield:5.6.1
-> Downloading org.codelibs:elasticsearch-langfield:5.6.1 from maven central
[=================================================] 100%   
Warning: sha512 not found, falling back to sha1. This behavior is deprecated and will be removed in a future release. Please update the plugin to use a sha512 checksum.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessDeclaredMembers
* java.lang.RuntimePermission getClassLoader
* java.lang.reflect.ReflectPermission suppressAccessChecks
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
-> Installed langfield
[root@centos69-vaiop-100 tmp]# /usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-minhash:5.6.1
-> Downloading org.codelibs:elasticsearch-minhash:5.6.1 from maven central
[=================================================] 100%   
Warning: sha512 not found, falling back to sha1. This behavior is deprecated and will be removed in a future release. Please update the plugin to use a sha512 checksum.
-> Installed minhash

サービス設定の追加

インストールした2つのモジュールをサービスとして登録します。

[root@centos69-vaiop-100 tmp]# /sbin/chkconfig --add elasticsearch
[root@centos69-vaiop-100 tmp]# /sbin/chkconfig --add fess

Fessを実行する

[root@centos69-vaiop-100 tmp]# service elasticsearch start elasticsearch を起動中: [ OK ] [root@centos69-vaiop-100 tmp]# service fess start fess を起動中:

Fessにアクセスしてみる

サービスを起動したらhttp://localhost:8080/にアクセスして動いていることを確認します。

今回のインストールはVAIO Type-p上のCentOS6.9にインストールしてみましたが、低スペックだからだと思いますが、かなりの重さ(他にも動いているものがあるので仕方ないですが)でしたので、インストールのみを記事にさせていただきます。
別の環境で試して観ますので、そちらは別の記事にさせていただきます。