Symfoware

Symfowareについての考察blog

DebianにOpenJDK + Tomcat 7 + Solr 3.5.0 の環境を構築する

以前、DebianにSolrの環境を構築しました。
Debian に Tomcat + Apache Solrの環境を構築

あれから二年経過し、ソフトウェアのバージョンが上がってます。

Tomcatは6から7
Solrは1.3.0から3.5.0

改めて、インストールを行い手順を確認したのでメモしておきます。



※2012/11/18追記

Solr 4.0のインストールを試してみました。

DebianにOpenJDK + Tomcat 7 + Solr 4.0 の環境を構築する
http://symfoware.blog68.fc2.com/blog-entry-1032.html






Javaのインストール(OpenJDK)



前回はSun Javaを使用しましたが、今回はOpenJDKを使ってみることにしました。
OpenJDK


インストールはapt-getで実行。


# apt-get install openjdk-6-jdk





インストール出来たか確認してみます。


# java -version
java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8.9) (6b18-1.8.9-0.1~squeeze1)
OpenJDK Client VM (build 14.0-b16, mixed mode, sharing)







Tomcat 7のインストール



Tomcat 7 Downloads
http://tomcat.apache.org/download-70.cgi

ここから最新版を取得し、/usr/local/jakartaに展開しました。


# mkdir /usr/local/jakarta
# cd /usr/local/jakarta/
# wget http://ftp.riken.jp/net/apache/tomcat/tomcat-7/v7.0.23/bin/apache-tomcat-7.0.23.tar.gz
# tar zxf apache-tomcat-7.0.23.tar.gz





binにあるstartup.shを実行して、起動を確認してみます。


# cd apache-tomcat-7.0.23/bin/
# ./startup.sh





ブラウザで、http://[サーバーIP]:8080/にアクセスして、以下の画面が表示されれば
Tomcatは動作しています。

01_001_20111130001156.png

Tomcat 7系を触るのは始めてなのですが、おしゃれな画面になってて驚きました。



起動が確認できたので、Tomcatを停止します。


# ./shutdown.sh





後はお好みですが、Tomcat 7を展開した階層にシンボリックリンクを作成しました。


# ln -s /usr/local/jakarta/apache-tomcat-7.0.23 /usr/local/tomcat7





起動用のスクリプトを/etc/init.d/tomcat7に作成。


# vi /etc/init.d/tomcat7





/etc/init.d/tomcat7の内容はこんな感じ。


#! /bin/sh
### BEGIN INIT INFO
# Provides: tomcat7
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: tomcat7 servlet server
# Description: tomcat7 servlet server
### END INIT INFO

DESC="tomcat7 servlet server"
NAME=tomcat7
DAEMON1=/usr/local/tomcat7/bin/startup.sh
DAEMON2=/usr/local/tomcat7/bin/shutdown.sh
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
export TOMCAT_HOME=/usr/local/tomcat7

. /lib/lsb/init-functions

case "$1" in
start)
    echo -n "Starting servlet server: $NAME"
    $DAEMON1
    ;;
stop)
    echo -n "Stopping servlet server: $NAME"
    $DAEMON2
    ;;
*)
    echo "Usage: $SCRIPTNAME {start|stop}" >&2
    exit 1
    ;;
esac
exit 0





ファイルを作成したら、実行権限を付与しておきます。


# chmod +x /etc/init.d/tomcat7





使い方はこんな感じになります。


起動のコマンド


# /etc/init.d/tomcat7 start



停止のコマンド


# /etc/init.d/tomcat7 stop





Debian 6からは、自動起動の設定はupdate-rc.dではなく、insservを使うのが
作法になったようです。

自動起動させる場合


# insserv tomcat7




自動起動を止める場合


# insserv -r tomcat7





昔の設定ファイルを使用し、update-rc.dを実行すると

insserv: Script tomcat7 is broken: incomplete LSB comment.
insserv: missing `Required-Start:' entry: please add even if empty.
insserv: missing `Required-Stop:' entry: please add even if empty.


という警告が発生したので気がつきました。






Solr 3.5.0の取得と展開



http://lucene.apache.org/solr/

ここの[Resources] - [Download]を選択すると、ダウンロードサイトの一覧が表示されます。

http://www.apache.org/dyn/closer.cgi/lucene/solr/


最寄りのダウンロードサイトから、apache-solr-3.5.0.tgzを取得し、解凍しました。


# cd /usr/local/src/
# wget http://ftp.riken.jp/net/apache//lucene/solr/3.5.0/apache-solr-3.5.0.tgz
# tar zxf apache-solr-3.5.0.tgz






まず、solrの設定ファイルやデータを保存するディレクトリを作成します。


# mkdir /usr/local/solr




作成した/usr/local/solrへsolrの動作に必要な設定ファイルやjarファイルをコピーします。


# cp -r /usr/local/src/apache-solr-3.5.0/example/solr/* /usr/local/solr
# cp -r /usr/local/src/apache-solr-3.5.0/contrib/ /usr/local/solr/
# cp -r /usr/local/src/apache-solr-3.5.0/dist/ /usr/local/solr/




コピーした設定ファイルの、/usr/local/solr/conf/solrconfig.xmlに
jarファイルのパスを指定する箇所があります。


    <!-- A dir option by itself adds any files found in the directory to
        the classpath, this is useful for including all jars in a
        directory.
    -->
    <lib dir="../../contrib/extraction/lib" />
    <lib dir="../../contrib/clustering/lib/" />
    <lib dir="../../contrib/velocity/lib" />

    <!-- When a regex is specified in addition to a directory, only the
        files in that directory which completely match the regex
        (anchored on both ends) will be included.
    -->
    <lib dir="../../dist/" regex="apache-solr-cell-\d.*\.jar" />
    <lib dir="../../dist/" regex="apache-solr-clustering-\d.*\.jar" />
    <lib dir="../../dist/" regex="apache-solr-dataimporthandler-\d.*\.jar" />
    <lib dir="../../dist/" regex="apache-solr-langid-\d.*\.jar" />
    <lib dir="../../dist/" regex="apache-solr-velocity-\d.*\.jar" />

    <!-- If a dir option (with or without a regex) is used and nothing
        is found that matches, it will be ignored
    -->
    <lib dir="../../contrib/clustering/lib/" />
    <lib dir="/total/crap/dir/ignored" />





どこを起点としての相対なのかいまいちわからなかったので、絶対パスで
先ほど/usr/local/solrにコピーしたjarファイルへのパスへ書き換えました。


    <!-- A dir option by itself adds any files found in the directory to
        the classpath, this is useful for including all jars in a
        directory.
    -->
    <lib dir="/usr/local/solr/contrib/extraction/lib" />
    <lib dir="/usr/local/solr/contrib/clustering/lib/" />
    <lib dir="/usr/local/solr/contrib/velocity/lib" />

    <!-- When a regex is specified in addition to a directory, only the
        files in that directory which completely match the regex
        (anchored on both ends) will be included.
    -->
    <lib dir="/usr/local/solr/dist/" regex="apache-solr-cell-\d.*\.jar" />
    <lib dir="/usr/local/solr/dist/" regex="apache-solr-clustering-\d.*\.jar" />
    <lib dir="/usr/local/solr/dist/" regex="apache-solr-dataimporthandler-\d.*\.jar" />
    <lib dir="/usr/local/solr/dist/" regex="apache-solr-langid-\d.*\.jar" />
    <lib dir="/usr/local/solr/dist/" regex="apache-solr-velocity-\d.*\.jar" />

    <!-- If a dir option (with or without a regex) is used and nothing
        is found that matches, it will be ignored
    -->
    <lib dir="/usr/local/solr/contrib/clustering/lib/" />
    <lib dir="/total/crap/dir/ignored" />







これで設定ファイルや動作に必要なjarの準備は完了です。

次に、webアプリケーション側の設定に移ります。

今回、/opt/solrでsolrを動かすことにします。



# mkdir /opt/solr
# cd /opt/solr/




warファイルを手動で/opt/solr/に解凍します。


# unzip /usr/local/src/apache-solr-3.5.0/dist/apache-solr-3.5.0.war




※unzipが入っていない場合は、aptで入れます。

# apt-get install unzip





/usr/local/tomcat7/conf/Catalina/localhost/にsolr.xmlというファイルを作成します。


# cd /usr/local/tomcat7/conf/Catalina/localhost/
# vi solr.xml




内容は以下のとおり。


<?xml version="1.0" encoding="utf-8"?>
<Context docBase="/opt/solr/" debug="0" crossContext="true">
    <Environment name="solr/home" type="java.lang.String" value="/usr/local/solr" override="true"/>
</Context>





ここまで完了したら、tomcatを起動します。

http://[サーバーIP]:8080/solr/admin/にアクセスして、こんな画面が表示されたら
無事起動完了です。

01_002_20111130001156.png



※前回インストールした時から設定箇所が変わっているところがあり、
試行錯誤しながら行ったので、手順に不備があるかもしれません。





起動時のエラー例




http://[サーバーIP]:8080/solr/admin/にアクセスしたときのエラー例です。


HTTPステータス 404 - missing core name in path



これは、solr/homeが正しく指定されていない場合に発生するようです。
/usr/local/tomcat7/conf/Catalina/localhost/solr.xmlに
Environmentでsolr/homeの指定があるか。
指定先のパスは正しいかを確認する必要があります。





Severe errors in solr configuration.
Check your log files for more detailed information on what may be wrong.



これは、/usr/local/solr/conf/solrconfig.xmlの指定に不備がある時発生するようです。
/usr/local/solrのdistやcontribへコピーしたjarファイルへのパス指定が
正しいか確認する必要があります。






参考URL



Solr with Apache Tomcat
http://wiki.apache.org/solr/SolrTomcat

HTTP Status 500 - java.lang.RuntimeException: Can't find resource 'solrconfig.xml'
http://stackoverflow.com/questions/1198282/http-status-500-java-lang-runtimeexception-cant-find-resource-solrconfig-xm




関連記事

テーマ:データベース - ジャンル:コンピュータ

  1. 2011/11/30(水) 00:13:07|
  2. apache solr
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<DebianのDependency Based Bootとは | ホーム | 関数型言語 Bodhi(ボーディー)をDebianにインストールする>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/839-836a4a5d
この記事にトラックバックする(FC2ブログユーザー)