せでぃのブログ

ブログ初心者おいどんのどうでもいい愚痴やどうでもいい愚痴やどうでもいいマメ知識などを披露するチラシの裏です。

CentOS6.5 32bit版にfess-server-9.2.0をインストールした手順

20150614追記:fess-server-9.4.0へのアップデート
20140716追記:hostsの解決
ほい、書きました。
f:id:Sediment:20140715142541p:plain

fess-server-9.4.0へのアップデート

 インストール手順はまったく変わりません。起動ログを最後に掲載しておきました。
 アンインストールは古いfessのディレクトリ、ここではfess-server-9.2.0のディレクトリを丸ごと削除するだけです。どちらも簡単だし、先に9.4.0の起動確認をお手軽にできるのが素晴らしいですね。

hostsの解決

更にいろいろいじってて気付いたのですが、hostsファイルに自サーバのhost名の記載がないと、fessの配備が30分経っても終わらない=fessが起動しないことが判明しました。5時間くらい待てば起動するかもしれませんが、アホらしいのでさっさと記載するだけ。
テスト環境だしlocalhostアクセスなら全然関係ないだろうと思っていただけに、ちょっと唖然。
え、これ、イーサにIPアドレス振らない場合、どうするんだろう……
[root]# vi /etc/hosts
f:id:Sediment:20140716113533p:plain
hosts反映のため、PC再起動
[root]# shutdown -r now

JAVAのインストールと設定

ソフトウェア/Javaの開発環境をCentOSにインストールする方法 - Linuxと過ごす
リンク先を参考に、openjdk1.7.0-develをインストール。インストール場所は/usr/lib/jvm/とかになるらしい。
ただ、インストール先を見ても似たようなディレクトリが一杯あってパスの通し方に迷うだけなので、
[root]# update-alternatives --config java
などを参考にパスの通し先を考えます。
f:id:Sediment:20140715140022p:plain


最終的に$JRE_HOMEだけで動くことがわかったので、それだけをbash_profileへ書き込む。$JAVA_HOMEは削っても動きました。
$JRE_HOME設定
[root]# vi ~/.bash_profile
[root]# source ~/.bash_profile
f:id:Sediment:20140716084029p:plain

FESSのダウンロードとインストール

wgetしたいので、current directoryを適当なダウンロード場所・展開場所へ移動。
[root]# cd /opt
ダウンロードファイル一覧 - Fess: 全文検索システム - OSDN
上記ページから、今回は最新の「fess-server-9.2.0.zip」をダウンロードする。移動先の「自動でダウンロードが開始されない場合のリンク」をwgetしてやる。
[root]# wget 'http://sourceforge.jp/frs/redir.php?m=iij&f=%2Ffess%2F61487%2Ffess-server-9.2.0.zip'
お次は解凍。
[root]# unzip fess-server-9.2.0.zip
[root]# cd /opt/fess-server-9.2.0/
シェル実行の権限を付与。
[root]# chmod +x bin/*.sh

これで、fessと一緒にtomcatも入ったことになります。こちらでは次の設定変更以外、一切変更は行っていません。

マニュアルになかった唯一の設定変更

PC環境に応じて、シェルsetenv.shを修正する。シェル内の注意書き参照。
[root]# vi ./bin/setenv.sh

# if 32bit OS, remove -XX:+UseCompressedOops
# if Java heap size is over 32GB heap, remove -XX:+UseCompressedOops
# if your machine has 2 or more cpu, enabled -XX:+CMSParallelRemarkEnabled by -XX:+UseConcMarkSweepGC

とある。うちの場合は32bitなので、「-XX:+UseCompressedOops」の記述を削除した。
f:id:Sediment:20140715141022p:plain


JavaVMのメモリ管理に関するまとめ(Javaヒープ、GC、ダンプ等) - ぺーぺーSEのブログ
「 if Java heap size is over 32GB heap, 〜」のくだりは、無視していいのではないでしょうか。上記ページによると、

  • XX:+UseCompressedOops

Java オブジェクトヒープのサイズが32ギガバイト未満の場合に、64 ビットJREのパフォーマンスを向上させる(★)

とのことで、Java heap sizeとは、JavaVMが管理するメモリ領域の話らしいので、そもそもメモリ32GBも積むサーバなどそうそうないでしょうから…

現場から学ぶWebアプリ開発のトラブルハック(2):“Stop the World”を防ぐコンカレントGCとは? (2/2) - @IT
「if your machine has 2 or more cpu,~」のくだりも、条件に合致しても無視していいのではないかと思う。XX:+UseConcMarkSweepGCオプションによって、-XX:+CMSParallelRemarkEnabledオプションも有効になりますよという意味だと思うので。上記記事でも、自動設定されると書いてある。
総じて、64bit機の場合、setenv.shをいじる必要はなさそうですね。

fessとtomcatサーバ起動

startup.shシェルを叩くだけ。
[root]# ./bin/startup.sh

[root]# ./bin/startup.sh
Using CATALINA_BASE: /opt/fess-server-9.2.0
Using CATALINA_HOME: /opt/fess-server-9.2.0
Using CATALINA_TMPDIR: /opt/fess-server-9.2.0/temp
Using JRE_HOME: /usr/lib/jvm/jre-1.7.0-openjdk
Using CLASSPATH: /opt/fess-server-9.2.0/bin/bootstrap.jar:/opt/fess-server-9.2.0/bin/tomcat-juli.jar
Tomcat started.

サーバ起動確認

サーバスペックによりますが、うちの場合、起動自体に問題がなくてもシェル実行後15分待機が必要でした…。tomcat単体なら3秒もかからずに上がってくるんだけどねぇ。待ってる間にtomcatの起動をプロセスと使用ポートで確認します。
[root]# ps aux | grep tomcat
[root]# lsof -i:8080
起動成功時は次のような表示になります。あとは起動完了を待つだけ。
長過ぎて待ちきれない、気になるという方は、当記事最下に起動過程のログを載せてますので、ログを比較しながら起動完了をお待ちください。基本的にはブラウザアクセスまでできて起動完了なんでしょうが。

[root]# ps aux | grep tomcat
root 2010 87.3 10.6 1318260 78572 pts/0 Sl 13:06 0:13 /usr/lib/jvm/jre-1.7.0-openjdk/bin/java -Djava.util.logging.config.file=/opt/fess-server-9.2.0/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dsolr.solr.home=/opt/fess-server-9.2.0/solr -Dfess.log.file=/opt/fess-server-9.2.0/webapps/fess/WEB-INF/logs/fess.out -Dsolr.log.file=/opt/fess-server-9.2.0/logs/solr.log -Djava.awt.headless=true -server -Xmx1g -XX:+UseTLAB -XX:+DisableExplicitGC -XX:MaxPermSize=128m -XX:-UseGCOverheadLimit -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:CMSIncrementalDutyCycleMin=0 -XX:+UseParNewGC -XX:+UseStringCache -XX:+UseCompressedStrings -XX:+OptimizeStringConcat -Djava.endorsed.dirs=/opt/fess-server-9.2.0/endorsed -classpath /opt/fess-server-9.2.0/bin/bootstrap.jar:/opt/fess-server-9.2.0/bin/tomcat-juli.jar -Dcatalina.base=/opt/fess-server-9.2.0 -Dcatalina.home=/opt/fess-server-9.2.0 -Djava.io.tmpdir=/opt/fess-server-9.2.0/temp org.apache.catalina.startup.Bootstrap start
root 2026 0.0 0.1 5436 800 pts/0 S+ 13:06 0:00 grep tomcat
[root]# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 2010 root 43u IPv6 15914 0t0 TCP *:webcache (LISTEN)

起動失敗時は次のように何も出てこないので、設定見直し。

[root]# ps aux | grep tomcat
root 2469 0.0 0.1 5436 804 pts/0 S+ 13:27 0:00 grep tomcat
[root]# lsof -i:8080
[root]#

サーバへアクセス

ブラウザでhttp://localhost:8080/fess/へアクセス
FESSインストール2日目 - せでぃのブログ
このような画面が出れば成功。

クロール設定

http://localhost:8080/fess/admin/へアクセス。
FESSインストール3日目、設定完了 - せでぃのブログ
この辺の記事を参考に、クロールの設定を行って終了です。インストール作業の感想などもこちら。

fess,tomcatサーバをシャットダウンする場合

shutdown.shシェルを叩くだけ。
うちではシャットダウン時に最後のようなVMのワーニングが出てますが、現状問題ないので、スルーしてます。
[root]# ./bin/shutdown.sh

[root]# ./bin/shutdown.sh
Using CATALINA_BASE: /opt/fess-server-9.2.0
Using CATALINA_HOME: /opt/fess-server-9.2.0
Using CATALINA_TMPDIR: /opt/fess-server-9.2.0/temp
Using JRE_HOME: /usr/lib/jvm/jre-1.7.0-openjdk
Using CLASSPATH: /opt/fess-server-9.2.0/bin/bootstrap.jar:/opt/fess-server-9.2.0/bin/tomcat-juli.jar
OpenJDK Server VM warning: ignoring option UseCompressedStrings; support was removed in 7.0

どうしても気になるようであれば、./bin/setenv.shから「-XX:+UseCompressedStrings」を削除してみましょう。こちらでは同箇所削除の上、PC再起動・fess起動成功・クロール成功・シャットダウン成功まで確認済みです。ワーニングがなくなりました。あってもなくてもいいオプションなのかねぇ。

シャットダウン確認

[root]# ps aux | grep tomcat
[root]# lsof -i:8080
シャットダウンに失敗して、プロセスが残っていたら、
[root]# kill -9 (PID)

ログ

ログの設定 — Fess 9.4 ドキュメント
インストール作業のご参考までに。
./logs/catalina.2014-07-15.log
というtomcatに関するログの内、起動成功したときのものです。ログに残ってるものだけでも、起動完了まで時間がかかっているのがわかると思います。
fess-server-9.2.0の起動ログ

7 15, 2014 1:06:47 午後 org.apache.catalina.core.AprLifecycleListener init
情報: The APR based Apache Tomcat Native library which allows optimal performanc
e in production environments was not found on the java.library.path: /usr/java/p
ackages/lib/i386:/lib:/usr/lib
7 15, 2014 1:06:49 午後 org.apache.coyote.AbstractProtocol init
情報: Initializing ProtocolHandler ["http-bio-8080"]
7 15, 2014 1:06:50 午後 org.apache.coyote.AbstractProtocol init
情報: Initializing ProtocolHandler ["ajp-bio-8009"]
7 15, 2014 1:06:50 午後 org.apache.catalina.startup.Catalina load
情報: Initialization processed in 6312 ms
7 15, 2014 1:06:50 午後 org.apache.catalina.core.StandardService startInternal
情報: サービス Catalina を起動します
7 15, 2014 1:06:50 午後 org.apache.catalina.core.StandardEngine startInternal
情報: Starting Servlet Engine: Apache Tomcat/7.0.54
7 15, 2014 1:06:50 午後 org.apache.catalina.startup.HostConfig deployDirectory
情報: Webアプリケーションディレクトリ /opt/fess-server-9.2.0/webapps/manager を
配備します
7 15, 2014 1:06:56 午後 org.apache.catalina.util.SessionIdGenerator createSecureRandom
情報: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [124] milliseconds.
7 15, 2014 1:06:57 午後 org.apache.catalina.startup.HostConfig deployDirectory
情報: Deployment of web application directory /opt/fess-server-9.2.0/webapps/manager has finished in 6,746 ms
7 15, 2014 1:06:57 午後 org.apache.catalina.startup.HostConfig deployDirectory
情報: Webアプリケーションディレクトリ /opt/fess-server-9.2.0/webapps/fess を配備します
7 15, 2014 1:08:43 午後 org.apache.catalina.startup.HostConfig deployDirectory
情報: Deployment of web application directory /opt/fess-server-9.2.0/webapps/fess has finished in 106,485 ms
7 15, 2014 1:08:43 午後 org.apache.catalina.startup.HostConfig deployDirectory
情報: Webアプリケーションディレクトリ /opt/fess-server-9.2.0/webapps/solr を配備します
7 15, 2014 1:09:55 午後 org.apache.catalina.startup.HostConfig deployDirectory
情報: Deployment of web application directory /opt/fess-server-9.2.0/webapps/solr has finished in 72,200 ms
7 15, 2014 1:09:55 午後 org.apache.coyote.AbstractProtocol start
情報: Starting ProtocolHandler ["http-bio-8080"]
7 15, 2014 1:09:55 午後 org.apache.coyote.AbstractProtocol start
情報: Starting ProtocolHandler ["ajp-bio-8009"]
7 15, 2014 1:09:55 午後 org.apache.catalina.startup.Catalina start
情報: Server startup in 185871 ms

fess-server-9.4.0の起動ログ

14-Jun-2015 23:47:00.176 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version: Apache Tomcat/8.0.22
14-Jun-2015 23:47:00.183 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Apr 29 2015 11:46:15 UTC
14-Jun-2015 23:47:00.184 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number: 8.0.22.0
14-Jun-2015 23:47:00.187 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
14-Jun-2015 23:47:00.188 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 2.6.32-431.20.5.el6.i686
14-Jun-2015 23:47:00.189 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: i386
14-Jun-2015 23:47:00.189 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71/jre
14-Jun-2015 23:47:00.190 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 1.7.0_71-mockbuild_2014_12_18_13_54-b00
14-Jun-2015 23:47:00.190 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
14-Jun-2015 23:47:00.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /opt/fess-server-9.4.0
14-Jun-2015 23:47:00.191 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /opt/fess-server-9.4.0
14-Jun-2015 23:47:00.193 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/opt/fess-server-9.4.0/conf/logging.properties
14-Jun-2015 23:47:00.194 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
14-Jun-2015 23:47:00.194 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dsolr.solr.home=/opt/fess-server-9.4.0/solr
14-Jun-2015 23:47:00.195 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dfess.log.file=/opt/fess-server-9.4.0/webapps/fess/WEB-INF/logs/fess.out
14-Jun-2015 23:47:00.195 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dsolr.log.file=/opt/fess-server-9.4.0/logs/solr.log
14-Jun-2015 23:47:00.196 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.awt.headless=true
14-Jun-2015 23:47:00.196 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx1g
14-Jun-2015 23:47:00.197 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseTLAB
14-Jun-2015 23:47:00.197 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+DisableExplicitGC
14-Jun-2015 23:47:00.198 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxPermSize=128m
14-Jun-2015 23:47:00.199 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:-UseGCOverheadLimit
14-Jun-2015 23:47:00.199 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseConcMarkSweepGC
14-Jun-2015 23:47:00.200 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:CMSInitiatingOccupancyFraction=75
14-Jun-2015 23:47:00.200 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+CMSIncrementalMode
14-Jun-2015 23:47:00.201 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+CMSIncrementalPacing
14-Jun-2015 23:47:00.201 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:CMSIncrementalDutyCycleMin=0
14-Jun-2015 23:47:00.204 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseParNewGC
14-Jun-2015 23:47:00.205 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseStringCache
14-Jun-2015 23:47:00.205 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseCompressedStrings
14-Jun-2015 23:47:00.206 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+OptimizeStringConcat
14-Jun-2015 23:47:00.206 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.endorsed.dirs=/opt/fess-server-9.4.0/endorsed
14-Jun-2015 23:47:00.207 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/opt/fess-server-9.4.0
14-Jun-2015 23:47:00.211 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/opt/fess-server-9.4.0
14-Jun-2015 23:47:00.212 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/opt/fess-server-9.4.0/temp
14-Jun-2015 23:47:00.212 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/i386:/lib:/usr/lib
14-Jun-2015 23:47:01.084 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
14-Jun-2015 23:47:01.339 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
14-Jun-2015 23:47:01.462 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
14-Jun-2015 23:47:01.491 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
14-Jun-2015 23:47:01.498 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 6464 ms
14-Jun-2015 23:47:01.890 INFO [main] org.apache.catalina.core.StandardService.startInternal サービス Catalina を起動します
14-Jun-2015 23:47:01.894 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.0.22
14-Jun-2015 23:47:02.023 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ /opt/fess-server-9.4.0/webapps/manager を配備します
14-Jun-2015 23:47:06.415 INFO [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [123] milliseconds.
14-Jun-2015 23:47:06.602 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /opt/fess-server-9.4.0/webapps/manager has finished in 4,579 ms
14-Jun-2015 23:47:06.606 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ /opt/fess-server-9.4.0/webapps/fess を配備します
14-Jun-2015 23:48:11.094 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
14-Jun-2015 23:49:03.207 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /opt/fess-server-9.4.0/webapps/fess has finished in 116,601 ms
14-Jun-2015 23:49:03.210 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ /opt/fess-server-9.4.0/webapps/solr を配備します
14-Jun-2015 23:49:20.787 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
14-Jun-2015 23:50:06.706 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /opt/fess-server-9.4.0/webapps/solr has finished in 63,495 ms
14-Jun-2015 23:50:06.753 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
14-Jun-2015 23:50:06.899 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
14-Jun-2015 23:50:06.913 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 185412 ms

参考)
インストールの全体的な流れはここ。
簡単構築ガイド — Fess 9.4 ドキュメント
管理設定はこの辺のページの左ペインにあります。
Fess 管理者ガイド — Fess 9.4 ドキュメント
全くうまくいかないときは、tomcatを別にいれて移行するという手もあります。setenv.shの存在にはこの辺で気付きました。
既存の Tomcat にインストール — Fess 9.4 ドキュメント
ドメイン名でのアクセスはこの辺。
Squidをリバースプロキシとして入れてFessにIPv6のドメイン名でアクセスしてみた - せでぃのブログ