サナギわさわさ.json

サナギさんとキルミーベイベーとプログラミングが好きです

Tomcat7 + Solr4.10の環境構築

Solrは5.0からスタンドアロンなサーバーアプリケーションになりましたが、Tomcatの上で動かしたい時のためにTomcat7 + Solr4.10の環境構築手順を残しておきます。今回はソースからビルドします。
Solr5.0の環境構築はこちら: CentOS7にSolr5.0を入れる手順 - サナギわさわさ.json

今回はCentOS7を使用しています。

Tomcat7のインストールとサービス登録

CentOS7では公式リポジトリにTomcat7が入っているので、何も考えなくてもインストールできます。

yum install java-1.7.0-openjdk*
yum install tomcat
firewall-cmd --zone=public --add-port=8080/tcp --permanent
systemctl restart firewalld.service
systemctl enable tomcat.service
systemctl start tomcat

http://localhost:8080/にアクセスできる事を確認

Solrのソースをダウンロード

Solrのコンパイルに使うantとivyも一緒にダウンロードします。

yum install wget
wget -P /usr/local/ http://archive.apache.org/dist/lucene/solr/4.10.2/solr-4.10.2-src.tgz
wget -P /usr/local/ http://ftp.kddilabs.jp/infosystems/apache//ant/binaries/apache-ant-1.9.4-bin.tar.gz
wget -P /usr/local/ http://ftp.tsukuba.wide.ad.jp/software/apache//ant/ivy/2.4.0/apache-ivy-2.4.0-bin.tar.gz
cd /usr/local/
tar zxvf solr-4.10.2-src.tgz
tar zxvf apache-ant-1.9.4-bin.tar.gz
tar zxvf apache-ivy-2.4.0-bin.tar.gz
cp apache-ivy-2.4.0/ivy-2.4.0.jar to apache-ant-1.9.4/lib/
環境変数の設定

バージョンに合わせて適切に設定してください。

export ANT_HOME=/usr/local/apache-ant-1.9.4
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64/
export PATH=${PATH}:/${ANT_HOME}/bin/
日本語対応

デフォルト設定では日本語が文字化けして検索にヒットしない場合があるのでSetCharacterEncodingFilterを入れます。
詳しくはこちらのサイトを参考にしてください。

tomcat7とsolr3.5.0のセットアップ(日本語の文字化け対策も) - Flicker's Style++

mkdir -p solr-4.10.2/solr/webapps/web/WEB-INF/classes/filters
classes/filters直下にSetCharacterEncodingFilter.classを配置

solr/webapps/web/WEB-INF/web.xmlに以下を追記

 <filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

etc/tomcat/server.xmlを修正

<Connector port="8080" protocol="HTTP/1.1"
 connectionTimeout="20000"
 redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
Solrのコンパイル
cd /usr/local/solr-4.10.2
ant clean
ant compile
#solr-4.10.2直下にsolrディレクトリができた事を確認
cd solr
ant dist
#solr直下にdistディレクトリができた事を確認
logging設定

SolrはSLF4Jをログ出力に使っており、Tomcat7ではその設定をこちらでしてやらないとSolrが起動しません。今回はSLF4J+Apache log4jで設定します。

cp solr-4.10.2/solr/example/lib/ext/* /usr/share/tomcat/lib
cp solr-4.10.2/solr/example/resources/log4j.properties /usr/share/tomcat7/lib

log4j.propertiesの中身は適当に編集してください。

Warファイルの配置と色々

Warファイルの配置 cp solr-4.10.2/solr/dist/solr-4.10.2-SNAPSHOT.war to /var/lib/tomcat/webapps/solr.war

solr.home用のディレクトリを作成し、直下にsolr.xmlを配置

mkdir /var/lib/solr/home
chmod -R a+w /var/lib/solr/home
vi /var/lib/solr/home/solr.xml
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false">
  <cores adminPath="/admin/cores">
  <core name="test" instanceDir="test" config="solrconfig.xml" schema="schema.xml"/>
  </cores>
</solr>

/etc/tomcat/tomcat.confを修正 JAVA_OPTS="${JAVA_OPTS} -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory -Dsolr.solr.home=/var/lib/solr/home"

core用のディレクトリ作成

mkdir /var/lib/solr/home/test
mkdir /var/lib/solr/home/test/conf
mkdir /var/lib/solr/home/test/data
chmod -R a+x /var/lib/solr/home/test/data
cp solr-4.10.2/solr/example/solr/collection1/conf/* /var/lib/solr/home/test/conf/

conf/schema.xmlとconf/solrconfig.xmlは好きなように編集してください。

設定は以上です。あとはservice tomcat restartで、http://localhost:8080/solrにアクセスして管理画面にコアが表示されていれば成功です。 サンプルデータの登録や検索機能の確認に関しては、 CentOS7にSolr5.0を入れる手順 - サナギわさわさ.jsonの終盤に書いてありますので、そちらを参照してください。お疲れさまでした。