第1回 Solr4のインストールから起動まで

2013-11-23

1. Solr4.5を動かしてみる

全文検索エンジンSolrにRDBのデータを喰わせてインデックスを作成するところまでを目標に、

Solr4のインストール〜構築を行っていきます。

  1. Solr4を動かしてみる
  2. Solr4のコア設定
  3. Solr4のインデックス設定(さわりだけ)
  4. Solr4にRDBのデータをくわせる
  5. Solr4でレプリケーションを構築する

1.1. まずはjavaのインストール!

RHEL系だったらyum, debian系だったらapt-getで入れてしまいましょう。

yum install -y java-1.6.0-openjdk

※上記例ではopenjdkを入れてますが、sun-javaのrpmをインストールしても大丈夫です。

1.2. Solr4をダウンロードしてみる

ダウンロードしたファイルを解凍します。
解凍してできたディレクトリの中はこんな感じになっています。

solr4.5解凍

Solrのチュートリアルによれば、「exampleディレクトリの中に移動してstart.jarを実行すれば動くぜ」と言っているのでとりあえず言うとおりにしてみます。

cd ./example
java -jar start.jar

ログ

solr初期起動

ログを見ると、

  • WAPの設定ファイルとしてexample/contexts/solr-jetty-context.xmlが使われる
  • example/webapps/solr.warの中身がexample/solr-webapp/webappに展開される
  • example/solr/collection1がcoreとして認識されている

ことがわかります。

http://localhost:8983/solr/
を開くと、solrの管理ページを確認できます。

ここで一旦solrを停止します。
^C

1.3. solrの配置

ここではsolrをoptに置くことにします。
なので、opt下にsolr-4.5.1をもってきます。
シンボリックリンクはりましょうか。
exampleはserverにします。

ln -s /opt/solr-4.5.1 /opt/solr
ln -s /opt/solr-4.5.1/example /opt/solr/server

シンボリックリンク

シンボリックリンク

/opt/solr/serverを見てみると

server内

ログは/var/log/solrに出力したいので、
/opt/solr/server/logsを削除してしまいます。

rm -fR /opt/solr/server/logs

1.4. solrの自動起動スクリプト

上のexampleのままでは、solrの起動/停止のたびにjava -jar start.jarをしなくてはならないので非常にイケてません。
ログからわかるとおり、アプリケーションコンテナにはjettyが使われています。
そこで、jettyの起動スクリプトを持ってきます。

jetty-distribution-x.x.x.vxxxx.tar.gzを解凍します。
解凍してできたディレクトリ。

jetty

binの中にjetty.shがあります。
これを/etc/init.dにコピーし、実行権限を付与します。
※jetty.shはsolrにリネームしておきます。

cd ./jetty-distribution-x.x.x.vxxxx
cp ./bin/jetty.sh /etc/init.d/solr
chmod +x /etc/init.d/solr

solr(元jetty.sh)を開いてみると、

jetty README

  • /etc/default/jetty
  • $HOME/.jettyrc
  • /etc/jetty.conf

のいずれかをjettyの設定ファイルとして読み込むと書いてあります。

また、設定値として下のものを設定せよ、とのことなので

jetty OPTS

jettyという名前のファイルを/etc/default/に作成します。

JAVA_HOME=/etc/alternatives/java_sdk
JAVA_OPTIONS="-Djava.awt.headless=true -server -XX:+UseGCOverheadLimit -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+UseTLAB -XX:MaxPermSize=128m -Xms512M -Xmx1024M $JAVA_OPTIONS -Dsolr.solr.home=/opt/solr/server/solr"
JETTY_HOME=/opt/solr/server
JETTY_USER=root
JETTY_PORT=8983
JETTY_LOGS=/var/log/solr

ここでの肝は、JAVA_OPTIONS
-Dsolr.solr.home=/opt/solr/server/solr
を指定していることです。
start.jarの起動時にsolrのホームディレクトリを指定できます。

JETTY_HOMEはwebアプリケーションディレクトリであり、start.jarが置いてあるところです。

1.5. ログの出力先

solr及びjettyのログ出力先を設定します。

jettyのログ出力先は、4.で/etc/default/jettyに設定しました。
solrのログ出力先は、$SOLR_HOME/resources/log4j.propertiesで指定します。

vi $SOLR_HOME/resources/log4j.properties
~
#solr.log=logs/
solr.log=/var/log/solr/
~

1.6. jettyを起動してみる

起動できるレベルの設定系はだいたい完了したので、いったんjettyを起動してみます。

# まずはchkconfigに自動起動を登録
chkconfig jetty on
# jetty起動
service jetty start
# いちおうプロセスの確認
ps -ef | grep jetty

solr起動

ブラウザから管理画面を開いて起動していることを確認します。

solr管理画面

2. Solr4のコア設定へ