CentOS 7にFess 13.1.0をインストールしました

前回、こんな(Cent OS 7にてオープンソースの検索サーバーFessを導入するまで)記事かきましたけど、なんやかんやあって、Fessを入れ直さなきゃいけないことになったので、せっかくだから最新版を入れようとた際の備忘録。ちなみに、前回のFessはきちんと動いてますが、諸事情により別のサーバーを使わざるを得ないことになったのです。

前回入れたのは、Fessの12.1.2でしたが、2019年6月21日現在の最新は、13.1.0ですので、そのRPM版を入れます。

環境は、お名前.comのVPS(KVM)サーバーで、OSは、CentOS 7です。
https://www.onamae.com/server/vps/
こちらの、6コアCPU、8GBメモリー、HDD800GBになります。
前回のFess 12.1.2をインストールしたサーバーは、CPUはXeonであること以外忘れちゃいましたが、メモリ32GB、SSD900GBくらいだったのでそれに比べるとダウングレードした感も。

前回でサーバーの基礎的な部分を学んだのもあって今回はなかなかスムーズ。無駄の少ない手順だと思います。なぜ、前回、httpやhttpsを許可しているのか今考えると謎ですね・・・成長した証と思うことにします(笑)

Java 11をインストール

Fess 13.1.0には、Java 11で動くってことで、Java 11をインストールします。

# yum install -y java-11-openjdk java-11-openjdk-devel

Elasticsearchのインストール

Fess 13.1.0に対応するElasticsearchは、7.1.Xなのでそれをインストールします。yumでインストールすることにしたんですが、その前にPGP keyのインポートが必要とのことで、こちらを参考にしつつ、インポート。

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

そしたら、elasticsearch.repoファイルを作成します。

# vi /etc/yum.repos.d/elasticsearch.repo

ファイル内容は以下の通り。

[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

保存したら、次は、Elasticsearchのインストールです。

# yum install -y elasticsearch

そしたら、Fessの公式インストールガイドにも書いてある通り、ElasticsearchにFess用の設定を記述します。以下のファイルを開いて、

# vi/etc/elasticsearch/elasticsearch.yml

以下を追記します。(とりあえず、最下行に追記しました)

configsync.config_path: /var/lib/elasticsearch/config

Fessのインストール

さて、お待ちかねFessのインストールです。まずは、Fess 13.1.0をダウンロードします。Lオプションでリダイレクトを許可しておかないとダウンロードできないのでご注意。

# curl -OL https://github.com/codelibs/fess/releases/download/fess-13.1.0/fess-13.1.0.rpm

ダウンロードしたら、インストールします。

# rpm -ivh fess-13.1.0.rpm

次に、Fess用のElasticsearchプラグインをインストールします。

# /usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-fess:7.1.0
# /usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-extension:7.1.0
# /usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-configsync:7.1.0
# /usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-dataformat:7.1.0
# /usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-minhash:7.1.0

Fessの設定ファイル(fess.in.sh)も変更します。

# vi /usr/share/fess/bin/fess.in.sh

fess.in.shの中で以下の部分がコメントアウトされているので、コメントアウトは外します。

#ES_HTTP_URL=http://localhost:9200
#FESS_DICTIONARY_PATH=/var/lib/elasticsearch/config/

ES_HTTP_URL=http://localhost:9200
FESS_DICTIONARY_PATH=/var/lib/elasticsearch/config/

Fessの起動

そしたらElasticsearchとFessを有効にします。

# systemctl daemon-reload
# systemctl enable elasticsearch.service
# systemctl enable fess.service

ファイアーウォールの設定を変更してFess用のポート8080を許可します。

# firewall-cmd --permanent --add-port=8080/tcp
# firewall-cmd --reload

Fessの前に、Elasticsearchを起動します。

# systemctl start elasticsearch.service

Elasticsearchが動いているか確認します。

# curl localhost:9200

JSONが返ってくれば成功です。そしたら、Fessを起動します。

# systemctl start fess.service

OutOfMemoryエラー発生

これで万事OKかと思ったものの、ログ(/var/log/fess/fess.log)を見るとなんかエラーが起こってました。詳細は割愛しますが、thumbnail関連でヒープメモリー不足を起こしているようでした。

これの設定はどこかと調べていると/etc/fess/fess_config.propertiesに該当の記述がありました。ファイルの中身を見てみましょう。

# vi /etc/fess/fess_config.properties

以下のような記述があり、どうやらthumbnail周りは、128MBとなっていたので、ひとまず256MBまであげてみました。

jvm.thumbnail.options=\
(略)
-Xms128m\n\
-Xmx128m\n\

jvm.thumbnail.options=\
(略)
-Xms256m\n\
-Xmx256m\n\

てか、128MBって昨今だと少ないイメージあるけど、他の人はエラーでてないんだろうか・・・?それはさておき、fessの再起動(一応、daemon-reloadも)します。

# systemctl stop fess.service
# systemctl daemon-reload
# systemctl start fess.service

これでしばらく様子を見ましたが、エラーは起こらなくなりました。

Fessの12.1.2と13.1.0の違い

自分がぱっと使ってみたところで違いというと

  • fess.in.shにデフォルトだとES_TRANSPORT_URLの記述がなくなっていました。必要なくなったんでしょうか?
  • JSONPがデフォルトだと使えなくなっていました。Fess 12.1.2の時は検索結果のAPI呼び出しで、Same-Origin-Policy回避のためにJSONPを使っていたんですが、こっちのサーバーにFess 13.1.0を入れて呼び出し元のIPをこっちのサーバーIPに変えたらダメでした。FessからJSONPとして返ってこないようでした。どうやら、Fess公式GitHubのコミット内容を見てたら、JSONPはデフォルトだとオフになっているようです。ためしに、api.jsonp.enalled=trueにしてみたんですが、JSONP使えませんでした・・・なんでだろう?でも、CORS設定もいつの間にかどこかのバージョンで追加されているみたいで、デフォルトだとなんでも許可しているみたいで、普通にJSONで呼び出しができましたので、まぁ、いいかというところです。(JSONP→JSONにしたら呼び出し元のVue.jsとtypescriptの関係で、少し苦労したのは内緒です)
  • 上述の通り、ヒープメモリー不足が起きました。こっちのサーバーでもFess 12.1.2を入れてみたけど、ヒープメモリー不足は起きなかったので、メモリーを食う作りになったんでしょうか?

新しいサーバーはKVMだからって、初期化を3,4回して、Fessのインストールに関して色々試してみたおかげで、だんだん洗練されてきました(笑)。もう、Fessのインストールは怖くありません。たぶん・・・。

funnydreamer
栃木生まれのミドルエイジ。フロントエンドとデザインの領域におりましたが、最近はマーケティングやライティングにPythonによる自動化など何でも屋になってきました。趣味は、ゲーム、アニメ、自転車(ポタリング)、カフェ巡り、お絵描きと自称多趣味。ケーキはショートケーキが好物。

ADD COMMENT

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください