Ubuntu10.04 に Solr 4.0 + Tomcat 7 の環境をセットアップする方法

Ubuntu10.04 に Solr 4.0 + Tomcat 7 の環境をセットアップする方法です。

Java のセットアップ

JDK のインストール

# apt-get install openjdk-6-jdk

Tomcat のセットアップ

Tomcat 7 のインストール

# mkdir /usr/local/jakarta; cd /usr/local/jakarta/
# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/tomcat/tomcat-7/v7.0.29/bin/apache-tomcat-7.0.29.tar.gz
# tar zxvf apache-tomcat-7.0.29.tar.gz
# ln -s /usr/local/jakarta/apache-tomcat-7.0.23 /usr/local/tomcat7

Tomcat の起動

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

起動したら http://hostname:8080/ をブラウザで確認。

Tomcat の停止

./shutdown.sh

Tomcat 起動スクリプトの作成

# vi /etc/init.d/tomcat7
#! /bin/sh

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

自動起動の設定(必要であれば)

apt-get install sysv-rc-conf
sysv-rc-conf tomcat7 on
sysv-rc-conf --list | grep tomcat7

Ubuntu では chkconfig, insserve は使えないため sysv-rc-conf をインストールする : [ubuntu] chkconfig problem - Ubuntu Forums

Solr のセットアップ

Solr のダウンロード

# cd /usr/local/src/
# wget http://ftp.riken.jp/net/apache/lucene/solr/4.0.0-ALPHA/apache-solr-4.0.0-ALPHA.tgz
# tar zxvf apache-solr-4.0.0-ALPHA.tgz
# mv apache-solr-4.0.0-ALPHA.tgz /usr/local/
# ln -s /usr/local/apache-solr-3.4.0 /usr/local/apache-solr

Solr 起動スクリプトの作成(この場合、サーブレットコンテナは Jetty となる。今回はサーブレットコンテナに Tomcat を使うので本来は不要だが念のため作っておく)

vi /etc/init.d/solr
#!/bin/sh
# description: Solr Boot
JETTY_HOME_DIR=/usr/local/apache-solr/example/
cd $JETTY_HOME_DIR
JAVA="/usr/bin/java"
LOG_FILE="/var/log/solr.log"

KEY=stopkey
CORE=solr
cd $JETTY_HOME_DIR
start() {
  $JAVA -Dsolr.solr.home=$CORE -DSTOP.PORT=8079 -DSTOP.KEY=$KEY -jar start.jar >> $LOG_FILE 2>&1 &
  echo "Solr started!"
}

stop() {
  $JAVA -DSTOP.PORT=8079 -DSTOP.KEY=$KEY -jar start.jar --stop
  echo "Solr stopped!"
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
      stop
      start
      ;;
    *)
      echo "Usage: $0 {start|stop|restart}"
      exit 1
esac
# chmod +x /etc/init.d/solr

スクリプトからの起動/停止を確認(Jetty)

# /etc/init.d/solr start
# /etc/init.d/solr stop

Tomcat の場合 /usr/local/tomcat7/webapps 以外の場所で solr/home を定義しなければならないとのことなので、/opt/solr で Solr を動かすように設定。

Solr の war ファイルを /opt/solr/ に解凍

# mkdir /opt/solr; cd /opt/solr/
# apt-get install unzip
# unzip /usr/local/apache-solr/dist/apache-solr-4.0.0-ALPHA.war

/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/apache-solr/example/solr" override="true"/>
</Context>

Tomcat を起動

/etc/init.d/tomcat7 start

http://hostname:8080/solr/ をブラウザから確認すると、Solr の admin 画面が表示される。