メモ。必要最低限のパッケージと作業のみを記述。 まだほとんど使用していないので穴があるかもしれない。
ソフトウェア構成:
- CentOS 6
- OpenJDK 1.7 (CentOS RPM パッケージ)
- Tomcat 6 (CentOS RPM パッケージ)
- Apache Solr 4.8.1 (Apache Solr サイトから
solr-<バージョン>.tgzを入手)
ファイル構成:
/etc/tomcat6/var/lib/tomcat6/webapps/solr(Solr サーブレット)/var/solr(Solr ホーム。$SOLR_HOME)/var/solr/dovecot-fts(Solr コア。Dovecot での利用を想定。名前は任意)
そのほか:
- Tomcat にロール
solr,solr-dovecot、 ユーザーadmin,dovecotを作成する。 - Solr コア
dovecot-ftsを作成し、ロールsolr-dovecotにはこのコアだけアクセス許可する。 - Tomcat 実行ユーザーにはコア内の
dataディレクトリだけ書き込みを許可する。
インストール
RHEL の場合は RHEL Server Optional チャンネルを有効にする必要がある。
# rhn-channel -a -c rhel-`uname -i`-server-optional-`lsb_release -sr |sed 's/\..*//'`
OpenJDK 1.7 と Tomcat 6 をインストールする。
# yum install -y java-1.7.0-openjdk tomcat6
/etc/tomcat6/tomcat-users.xml が誰でも読めるモードになっているので修正する。
# chmod o-r /etc/tomcat6/tomcat-users.xml
Solr 4.8.1 をダウンロードしてインストールする。 依存 JAR は付属のものを利用する。
# wget http://ftp.jaist.ac.jp/pub/apache/lucene/solr/4.8.1/solr-4.8.1.tgz
# tar -xzf solr-4.8.1.tgz --no-same-owner
# cd solr-4.8.1
# unzip -d /var/lib/tomcat6/webapps/solr dist/solr-4.8.1.war
# cp -p --no-clobber dist/solrj-lib/* /var/lib/tomcat6/webapps/solr/WEB-INF/lib/
Solr Cell と Apache Tika (オプション)
付属の Solr Cell プラグインと Apache Tika を利用する場合は関連 JAR をインストールする。
# cp -p --no-clobber dist/solr-cell-* /var/lib/tomcat6/webapps/solr/WEB-INF/lib/
# cp -p --no-clobber contrib/extraction/lib/* /var/lib/tomcat6/webapps/solr/WEB-INF/lib/
Solr ログ (オプション)
# mkdir -p -m 0755 /var/lib/tomcat6/webapps/solr/WEB-INF/classes
# vi /var/lib/tomcat6/webapps/solr/WEB-INF/classes/log4j.properties
…省略…
log4j.properties 設定例:
log4j.rootLogger=WARN, file
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=${catalina.home}/logs/solr.log
log4j.appender.file.MaxBackupIndex=180
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %p [%c{3}] - [%t] - %X{ip}: %m%n
$SOLR_HOME ディレクトリの作成
$SOLR_HOME を作成し、その中に Solr コアの例として dovecot-fts を作成する。
# mkdir -p -m 02750 /var/solr
# cp -rp example/solr/* /var/solr/
# chown -R root:tomcat /var/solr
# mv /var/solr/collection1 /var/solr/dovecot-fts
# perl -pi -e 's/^(name)=.*/$1=dovecot-fts/' /var/solr/dovecot-fts/core.properties
# mkdir -m 02750 /var/solr/dovecot-fts/data
# chown tomcat: /var/solr/dovecot-fts/data
Tomcat の設定
/etc/sysconfig/tomcat6 の最後のほうに
Solr のホームディレクトリの場所を指定する記述を追加する。
(/etc/tomcat6/tomcat6.conf でもよいが、
複数の Tomcat インスタンスを起動する場合は避けること。
/etc/sysconfig/tomcat6 ファイル先頭のコメント参照)
SOLR_HOME="/var/solr"
JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=${SOLR_HOME}"
/etc/tomcat6/server.xml の
<Connector port="8080" 〜 /> に useBodyEncodingForURI="true" を追加する。
…省略…
<Connector port="8080" protocol="HTTP/1.1"
useBodyEncodingForURI="true"
connectionTimeout="20000"
redirectPort="8443" />
…省略…
/etc/tomcat6/tomcat-users.xml に Solr
管理者と Solr コア用のロールとユーザーを追加する。
<tomcat-users>
…省略…
<role rolename="solr" />
<role rolename="solr-dovecot" />
<user username="admin" password="パスワード" roles="solr" />
<user username="dovecot" password="パスワード" roles="solr-dovecot" />
</tomcat-users>
/var/lib/tomcat6/webapps/solr/WEB-INF/web.xml に Solr
へのアクセスのセキュリティ制約とログインの設定を追加する。
<web-app …>
…省略…
<security-constraint>
<web-resource-collection>
<web-resource-name>Solr Admin</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>solr</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Solr Dovecot FTS</web-resource-name>
<url-pattern>/dovecot-fts/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>solr</role-name>
<role-name>solr-dovecot</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Solr</realm-name>
</login-config>
</web-app>
ブート時の Tomcat 自動起動を有効化し、Tomcat サービスを起動する。
# chkconfig tomcat6 on
# service tomcat6 start
http://ホスト名:8080/solr/ にアクセス!
TODO
- Solr 設定