OSS Fan ~OSSでLinuxサーバ構築~

作成日: 2017/12/06

OSSでLinuxサーバ構築

Fess 11.4.4をAWSのEC2(RHEL 7.2)へインストール

トップページOSSでLinuxサーバ構築 > Fess 11.4.4をAWSのEC2(RHEL 7.2)へインストール
このエントリーをはてなブックマークに追加

概要

 AWSのEC2インスタンス上にFessを利用した全文検索サーバを構築します。 Googleのように設定したウェブサイトをクロールし、任意のキーワードで検索し、 ヒットしたページを表示するというおなじみの機能です。 FessはJavaで開発されたソフトウェアであるため、JDKの導入が必要となります。 また、Fessのコア機能である検索エンジンにElasticsearchという別のソフトウェアを利用しています。 そのため、Fessに先立ってElasticsearchの導入が必要となります。 今回は製品のインストールとWebブラウザによる接続確認を行うところまでの手順をまとめます。

構成

想定環境

 AWS(Amazon Web Services)のEC2インスタンスを準備し、Fessをインストールました。 参考までに、サーバのスペックは以下のとおりです。

■サーバスペック
項目内容
インスタンスタイプt2.micro
vCPU1
メモリ1GB
ディスクSSD 10GiB
リージョン日本

 ただし、FessとElasticsearchのJVMが合計で1.5GBのJavaヒープメモリを使用するため、1GBメモリでは足りません。 そこで事前に2GBのスワップファイルを作成したうえで、以下の作業を行いました。 AWSの利用料を抑えるためにややめんどくさいことをしましたが、単純にEC2のインスタンスタイプをt2.mediumにすることで解決する方が簡単かと思います。

サーバ構成

OSバージョン

Red Hat Enterprise Linux 7.4 x86_64

ソフトウェア・パッケージ一覧

  • jdk-8u152-linux-x64.rpm
  • elasticsearch-5.6.1.rpm
  • fess-11.4.4.rpm

クライアント構成

OSバージョン

Windows 10 Pro 64bit

ソフトウェア・パッケージ一覧

  • Microsoft Edge 40.15063.674.0

サーバ構築

インストール

(1) wgetのインストール

 Fessのインストールモジュールをサーバにダウンロードするためのツールとして、wgetをインストールします。

$ sudo su -
# yum install -y wget
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
rhui-REGION-client-config-server-7                                                               | 2.9 kB  00:00:00
https://rhui2-cds02.ap-northeast-1.aws.ce.redhat.com/pulp/repos//content/dist/rhel/rhui/server/7/7Server/x86_64/os/repodata/repomd.xml: [Errno 14] HTTPS Error 401 - Unauthorized
Trying other mirror.
rhui-REGION-rhel-server-releases                                                                 | 3.5 kB  00:00:00
rhui-REGION-rhel-server-rh-common                                                                | 3.8 kB  00:00:00
(1/7): rhui-REGION-rhel-server-releases/7Server/x86_64/group                                     | 709 kB  00:00:00
(2/7): rhui-REGION-client-config-server-7/x86_64/primary_db                                      | 1.2 kB  00:00:00
(3/7): rhui-REGION-rhel-server-releases/7Server/x86_64/updateinfo                                | 2.4 MB  00:00:00
(4/7): rhui-REGION-rhel-server-rh-common/7Server/x86_64/group                                    |  104 B  00:00:00
(5/7): rhui-REGION-rhel-server-rh-common/7Server/x86_64/updateinfo                               |  32 kB  00:00:00
(6/7): rhui-REGION-rhel-server-rh-common/7Server/x86_64/primary_db                               | 119 kB  00:00:00
(7/7): rhui-REGION-rhel-server-releases/7Server/x86_64/primary_db                                |  44 MB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package wget.x86_64 0:1.14-15.el7_4.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package           Arch                Version                      Repository                                     Size
========================================================================================================================
Installing:
 wget              x86_64              1.14-15.el7_4.1              rhui-REGION-rhel-server-releases              547 k

Transaction Summary
========================================================================================================================
Install  1 Package

Total download size: 547 k
Installed size: 2.0 M
Downloading packages:
wget-1.14-15.el7_4.1.x86_64.rpm                                                                  | 547 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : wget-1.14-15.el7_4.1.x86_64                                                                          1/1
  Verifying  : wget-1.14-15.el7_4.1.x86_64                                                                          1/1

Installed:
  wget.x86_64 0:1.14-15.el7_4.1

Complete!

(2) Oracle JDKのダウンロード

 Fessのインストール要件である「Java 8u20以上のバージョン」を満たすため、 Oracle JDK 8の最新バージョン(2017年12月3日時点)をダウンロードします。

# cd /media/
# mkdir installer
# cd /media/installer/ ←ここにインストールモジュールをダウンロードする
# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-linux-x64.rpm"
--2017-12-02 17:41:22--  http://download.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-linux-x64.rpm
Resolving download.oracle.com (download.oracle.com)... 23.44.174.249, 23.44.174.243
Connecting to download.oracle.com (download.oracle.com)|23.44.174.249|:80... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://edelivery.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-linux-x64.rpm [following]
--2017-12-02 17:41:22--  https://edelivery.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-linux-x64.rpm
Resolving edelivery.oracle.com (edelivery.oracle.com)... 104.71.161.181, 2600:140b:7000:3b3::2d3e, 2600:140b:7000:380::2d3e
Connecting to edelivery.oracle.com (edelivery.oracle.com)|104.71.161.181|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: http://download.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-linux-x64.rpm?AuthParam=1512236602_2bd8d26750b9c21e2f444ed0273f7592 [following]
--2017-12-02 17:41:22--  http://download.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-linux-x64.rpm?AuthParam=1512236602_2bd8d26750b9c21e2f444ed0273f7592
Connecting to download.oracle.com (download.oracle.com)|23.44.174.249|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 174192082 (166M) [application/x-redhat-package-manager]
Saving to: ‘jdk-8u152-linux-x64.rpm’

100%[==============================================================================>] 174,192,082 7.00MB/s   in 23s

2017-12-02 17:41:46 (7.21 MB/s) - ‘jdk-8u152-linux-x64.rpm’ saved [174192082/174192082]

# ls -l
total 170112
-rw-r--r-- 1 root root 174192082 Oct  9 22:05 jdk-8u152-linux-x64.rpm ←ダウンロードしたファイル

(3) Elasticsearchのダウンロード

 Fessの検索エンジンにはElasticsearchが利用されています。 そのため、インストール要件としてElasticsearchが挙げられています。 2016年12月3日時点ではElasticsearch 6.0.0が最新ですが、Fessのインストール要件では「Elasticsearch 5.6.1」が指定されているので、 指定されたバージョンをダウンロードします。

# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.1.rpm
--2017-12-02 17:42:55--  https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.1.rpm
Resolving artifacts.elastic.co (artifacts.elastic.co)... 54.225.188.6, 54.235.82.130, 54.243.108.41, ...
Connecting to artifacts.elastic.co (artifacts.elastic.co)|54.225.188.6|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 33666459 (32M) [application/octet-stream]
Saving to: ‘elasticsearch-5.6.1.rpm’

100%[==============================================================================>] 33,666,459  8.65MB/s   in 4.6s

2017-12-02 17:43:01 (7.04 MB/s) - ‘elasticsearch-5.6.1.rpm’ saved [33666459/33666459]

# ls -l
total 202992
-rw-r--r-- 1 root root  33666459 Sep 18 21:03 elasticsearch-5.6.1.rpm ←ダウンロードしたファイル
-rw-r--r-- 1 root root 174192082 Oct  9 22:05 jdk-8u152-linux-x64.rpm

(4) Fessのダウンロード

 Fessは2017年12月3日時点で最新のバージョン11.4.4をダウンロードします。

# wget https://github.com/codelibs/fess/releases/download/fess-11.4.4/fess-11.4.4.rpm
--2017-12-02 17:44:39--  https://github.com/codelibs/fess/releases/download/fess-11.4.4/fess-11.4.4.rpm
Resolving github.com (github.com)... 192.30.255.113, 192.30.255.112
Connecting to github.com (github.com)|192.30.255.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/12801725/074824c0-cbee-11e7-9c90-322a17a2a504?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20171202%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20171202T174440Z&X-Amz-Expires=300&X-Amz-Signature=ee4d7ef607cffc9ad8469b10706da590d5c09447ce6969404a4064e25dd9a225&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dfess-11.4.4.rpm&response-content-type=application%2Foctet-stream [following]
--2017-12-02 17:44:40--  https://github-production-release-asset-2e65be.s3.amazonaws.com/12801725/074824c0-cbee-11e7-9c90-322a17a2a504?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20171202%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20171202T174440Z&X-Amz-Expires=300&X-Amz-Signature=ee4d7ef607cffc9ad8469b10706da590d5c09447ce6969404a4064e25dd9a225&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dfess-11.4.4.rpm&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.230.19
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.230.19|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 126663414 (121M) [application/octet-stream]
Saving to: ‘fess-11.4.4.rpm’

100%[==============================================================================>] 126,663,414 8.19MB/s   in 21s

2017-12-02 17:45:02 (5.75 MB/s) - ‘fess-11.4.4.rpm’ saved [126663414/126663414]

# ls -l
total 326688
-rw-r--r-- 1 root root  33666459 Sep 18 21:03 elasticsearch-5.6.1.rpm
-rw-r--r-- 1 root root 126663414 Nov 17 14:21 fess-11.4.4.rpm ←ダウンロードしたファイル
-rw-r--r-- 1 root root 174192082 Oct  9 22:05 jdk-8u152-linux-x64.rpm

(5) Oracle JDKのインストール

 wgetでダウンロードしたOracle JDKのRPMパッケージをインストールします。

# rpm -ihv jdk-8u152-linux-x64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk1.8-2000:1.8.0_152-fcs        ################################# [100%]
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...

(6) Elasticsearchのインストール

 wgetでダウンロードしたElasticsearchのRPMパッケージをインストールします。

# rpm -ihv elasticsearch-5.6.1.rpm
warning: elasticsearch-5.6.1.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing...                          ################################# [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
Updating / installing...
   1:elasticsearch-0:5.6.1-1          ################################# [100%]
### 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

(7) ElasticsearchとFessの連携設定

 ElasticsearchとFessを連携させるための設定を追加します。

# cd /etc/elasticsearch/
# vi elasticsearch.yml
ファイル名:/etc/elasticsearch/elasticsearch.yml
※ファイルの末尾に追加※
configsync.config_path: /var/lib/elasticsearch/config

(8) Fessのインストール

 wgetでダウンロードしたFessのRPMパッケージをインストールします。

# cd /media/installer/
# rpm -ihv fess-11.4.4.rpm
Preparing...                          ################################# [100%]
Creating fess group... OK
Creating fess user... OK
Updating / installing...
   1:fess-11.4.4-1                    ################################# [100%]
### 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

(9) ElasticsearchのFess用機能拡張プラグインのインストール

 ElasticsearchのFess用機能拡張プラグインをインストールします。 インストールに使用するのはElasticsearchのプラグインインストールシェルです。

# cd /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: 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
# ./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: 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
# ./elasticsearch-plugin install org.codelibs:elasticsearch-analysis-synonym:5.6.1
-> Downloading org.codelibs:elasticsearch-analysis-synonym:5.6.1 from maven central
[=================================================] 100%??
-> Installed analysis-synonym
# ./elasticsearch-plugin install org.codelibs:elasticsearch-configsync:5.6.1
-> Downloading org.codelibs:elasticsearch-configsync:5.6.1 from maven central
[=================================================] 100%??
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.io.FilePermission <<ALL FILES>> 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
# ./elasticsearch-plugin install org.codelibs:elasticsearch-dataformat:5.6.1
-> Downloading org.codelibs:elasticsearch-dataformat:5.6.1 from maven central
[=================================================] 100%??
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     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
# ./elasticsearch-plugin install org.codelibs:elasticsearch-langfield:5.6.1
-> Downloading org.codelibs:elasticsearch-langfield:5.6.1 from maven central
[=================================================] 100%??
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     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
# ./elasticsearch-plugin install org.codelibs:elasticsearch-minhash:5.6.1
-> Downloading org.codelibs:elasticsearch-minhash:5.6.1 from maven central
[=================================================] 100%??
-> Installed minhash

設定

(1) Systemdのサービスユニットファイル再読み込み

 ElasticsearchとFessのインストールによってSystemdのサービスユニットファイルが追加されたので、 利用できるように再読み込みを行います。

# systemctl daemon-reload

(2) Elasticsearchの自動起動設定

 ElasticsearchのサービスをSystemdにより自動起動する設定を行います。

# systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: disabled) ←自動起動無効
   Active: inactive (dead) ←サービス停止中
     Docs: http://www.elastic.co
# systemctl enable elasticsearch.service ←Elasticsearchの自動起動有効化
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
# systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled) ←自動起動有効
   Active: inactive (dead) ←サービス停止中
     Docs: http://www.elastic.co

(3) Fessの自動起動設定

 FessのサービスをSystemdにより自動起動する設定を行います。

# systemctl status fess.service
● fess.service - Fess
   Loaded: loaded (/usr/lib/systemd/system/fess.service; disabled; vendor preset: disabled) ←自動起動無効
   Active: inactive (dead) ←サービス停止中
     Docs: http://fess.codelibs.org/
# systemctl enable fess.service ←Fessの自動起動有効化
Created symlink from /etc/systemd/system/multi-user.target.wants/fess.service to /usr/lib/systemd/system/fess.service.
# systemctl status fess.service
● fess.service - Fess
   Loaded: loaded (/usr/lib/systemd/system/fess.service; enabled; vendor preset: disabled) ←自動起動有効
   Active: inactive (dead) ←サービス停止中
     Docs: http://fess.codelibs.org/

(4) Elasticsearchの起動

 一通り設定が完了しましたので、Elasticsearchのサービスを起動します。

# systemctl start elasticsearch.service ←Elasticsearchのサービス起動
# systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled) ←自動起動有効
   Active: active (running) since Sat 2017-12-02 18:02:03 UTC; 13s ago ←サービス起動中
     Docs: http://www.elastic.co
  Process: 2079 ExecStartPre=/usr/share/elasticsearch/bin/elasticsearch-systemd-pre-exec (code=exited, status=0/SUCCESS)
 Main PID: 2080 (java)
   CGroup: /system.slice/elasticsearch.service
           mq2080 /bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSIn...

Dec 02 18:02:03 ip-172-31-26-45.ap-northeast-1.compute.internal systemd[1]: Starting Elasticsearch...
Dec 02 18:02:03 ip-172-31-26-45.ap-northeast-1.compute.internal systemd[1]: Started Elasticsearch.

(5) Fessの起動

 Elasticsearchに続いて、Fessのサービスを起動します。

# systemctl start fess.service ←Fessのサービス起動
# systemctl status fess.service
● fess.service - Fess
   Loaded: loaded (/usr/lib/systemd/system/fess.service; enabled; vendor preset: disabled) ←自動起動有効
   Active: active (running) since Sat 2017-12-02 18:03:10 UTC; 5s ago ←サービス起動中
     Docs: http://fess.codelibs.org/
 Main PID: 2159 (java)
   CGroup: /system.slice/fess.service
           mq2159 /bin/java -Xms512m -Xmx512m -Djava.awt.headless=true -Djna.nosys=true -Djdk.io.permissionsUseCanoni...

Dec 02 18:03:10 ip-172-31-26-45.ap-northeast-1.compute.internal systemd[1]: Started Fess.
Dec 02 18:03:10 ip-172-31-26-45.ap-northeast-1.compute.internal systemd[1]: Starting Fess...

動作テスト

(1) Fessのサービスへ接続確認

 インストールと設定が終わったら、ブラウザでFessのサービスに接続確認を行います。 ブラウザで以下のURLにアクセスします。

http://[FQDN]:8080

(2) Fessの管理UIへ接続確認

 ブラウザで以下のURLにアクセスします。 インストールで自動作成される管理アカウントのユーザ名は「admin」で、 初期パスワードは「admin」です。

http://[FQDN]:8080/admin

プロフィール

らのっち

損害保険会社のIT企画部に勤務するSEです。OSSを勉強中です。

<所属>
日本PostgreSQLユーザ会とくしまOSS普及協議会


第000414号