Symfoware

Symfowareについての考察blog

Debian に Tomcat + Apache Solrの環境を構築


※2011年11月30日 追記

Tomcat 7、Solr 3.5.0でのインストールを試してみました。
DebianにOpenJDK + Tomcat 7 + Solr 3.5.0 の環境を構築する




以前、Apache Solr をインストールしてみましたが、
その後放置してました。

Debianで全文検索サーバー「Apache Solr」を動かす
http://symfoware.blog68.fc2.com/blog-entry-131.html

改めて調べてみます。


Tomcatの導入



前回はSolr同梱のjettyで動作させましたが、今回はTomcatで
動かしてみようと思います。

※Tomcatの方が経験が多いので。

Javaはインストール済の前提で話を進めます。
今回はJava1.6.0_16を使用しました。

Tomcatのダウンロードは
Tomcat 6 Downloads
http://tomcat.apache.org/download-60.cgi
ここからapache-tomcat-6.0.20.tar.gzをダウンロードして使用しました。


# mkdir /usr/local/jakarta
# cd /usr/local/jakarta/
# wget http://ftp.riken.jp/net/apache/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz
# tar zxf apache-tomcat-6.0.20.tar.gz
# cd apache-tomcat-6.0.20/bin/
# ./startup.sh



とりあえず起動確認です。ブラウザで
http://[サーバーIP]:8080/
にアクセスして、Apache Tomcatのページが表示されればOK

確認が取れたらシャットダウン


# ./shutdown.sh




後はお好みで。
シンボリックリンクを設定

# ln -s /usr/local/jakarta/apache-tomcat-6.0.20 /usr/local/tomcat6




起動スクリプト作成

# vi /etc/init.d/tomcat6



/etc/init.d/tomcat6の内容

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

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

export JAVA_HOME=/usr/local/jdk1.6.0_16
export TOMCAT_HOME=/usr/local/tomcat6

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



実行権限付与

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



起動

# /etc/init.d/tomcat6 start



停止

# /etc/init.d/tomcat6 start



自動起動

# update-rc.d tomcat6 start 90 2 3 4 5 . stop 10 0 1 6 .



自動起動をやめる

# update-rc.d -f tomcat6 remove






Solrの導入




# cd /tmp
# wget http://ftp.riken.jp/net/apache/lucene/solr/1.3.0/apache-solr-1.3.0.tgz
# tar zxf apache-solr-1.3.0.tgz



展開したディレクトリのexample/webappsにsolr.warがあるので、
それをtomcatのwebappsに放り込んでやります。


# cp /tmp/apache-solr-1.3.0/example/webapps/solr.war /usr/local/tomcat6/webapps/
# /etc/init.d/tomcat6 start



まあ、これで動くだろ。と思い
http://[サーバーIP]:8080/solr/admin
にアクセスすると、もっさりエラーが発生します。


HTTPステータス 500 - Severe errors in solr configuration.
Check your log files for more detailed information on what may be wrong.
If you want solr to continue after configuration errors,
change: <abortOnConfigurationError>false</abortOnConfigurationError> in null
-------------------------------------------------------------
java.lang.RuntimeException: Can't find resource 'solrconfig.xml'
in classpath or 'solr/conf/',
cwd=/usr/local/jakarta/apache-tomcat-6.0.20
at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:194)
at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:162)
at org.apache.solr.core.Config.<init>(Config.java:100)
at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:113)
at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:70)
at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:117)
at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:69)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3800)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4450)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:850)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:724)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:493)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)




同様にお困りの方がいらしたので、お知恵をお借りしました。

お題目うぉっち SolrのTomcatへのインストールでハマる
http://blog.livedoor.jp/maru_tak/archives/50558782.html


どうやら、solr/homeを定義してあげないといけない。
かつ、それはwebapps以外じゃないといけないようなので、
/usr/local/tomcat6/solrを用意し、必要なファイルをそろえます。


# mkdir /usr/local/tomcat6/solr
# mkdir /usr/local/tomcat6/solr/data
# cp -r /tmp/apache-solr-1.3.0/example/solr/bin /usr/local/tomcat6/solr/
# cp -r /tmp/apache-solr-1.3.0/example/solr/conf /usr/local/tomcat6/solr/



web.xmlにsolr/homeの定義があるので変更。

# vi /usr/local/tomcat6/webapps/solr/WEB-INF/web.xml



この部分を・・・

<!--
<env-entry>
    <env-entry-name>solr/home</env-entry-name>
    <env-entry-value>/put/your/solr/home/here</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
</env-entry>
-->



コメントをはずじて、こんな感じに変更

<env-entry>
    <env-entry-name>solr/home</env-entry-name>
    <env-entry-value>/usr/local/tomcat6/solr</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
</env-entry>




変更後、tomcatを起動して
http://[サーバーIP]:8080/solr/admin
にアクセスすると、画面が表示されました。

・・・これであってるんだろうか?



【参考URL】
起動処理(init)とランレベル(rc.d)の制御
http://park15.wakwak.com/~unixlife/linux/de-init.html

第5回 全文検索エンジン「Lucene/Solr」を導入する
http://itpro.nikkeibp.co.jp/article/COLUMN/20090728/334626/?ST=oss&P=1

お題目うぉっち SolrのTomcatへのインストールでハマる
http://blog.livedoor.jp/maru_tak/archives/50558782.html





関連記事

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

  1. 2009/10/22(木) 12:10:04|
  2. apache solr
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Debian に Tomcat + Apache Solr + 日本語検索対応環境を構築 | ホーム | XQuery 関係で掲載した記事の一覧>>

コメント

コメントの投稿


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

トラックバック

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