気付けば環境設定ばかりしている毎日なのですが、今日はTomcat7.0にSolr3.5をセットアップします。 ■ Solrのダウロード&Tomcatにデプロイ Solrのホームページからダウンロードしてきます。Ultra Fastて…って思うけどもw zipファイルを落としてきて解凍後、solr.warをTomcatのwebappsディレクトリに突っ込みます C:UsersoreoreDownloadsapache-solr-3.5.0apache-solr-3.5.0examplewebappssolr.war から C:Program FilesApache Software FoundationTomcat 7.0webapps に。 Tomcatを起動するとwarファイルが解凍されます。 admin画面を開こうとすると404になってしまいます。まぁ、そんなものです。 ■ エラーログを確認しつつSolrがTomcat上で動くようにする ログ見るとsolrのコンフィグがクラスパス上に見つかりませんわって事みたいです。
3 02, 2012 1:53:57 午後 org.apache.solr.common.SolrException log 重大: java.lang.RuntimeException: Can't find resource 'solrconfig.xml' in classpath or 'solr.conf/', cwd=C:Program FilesApache Software FoundationTomcat 7.0 at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:268) at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:234) at org.apache.solr.core.Config.(Config.java:141) at org.apache.solr.core.SolrConfig.(SolrConfig.java:131)
って事で、Solr周りではとてもお世話になった↓の書籍のAppendixに載ってる"TomcatでSolrを使う"を参照してみます。
・その1. server.xmlのConnector定義にuseBodyEncodingForURI="true"を設定する →サクっと出来ました。 ・その2. solrのWEB-INFにclasses/filterというディレクトリを作ってTomcatのexamplesからSetCharacterEncodingFilter.classをコピーする →examplesにSetCharacterEncodingFilterが無くなってる… TomcatのChangelogを見ると↓web.xmlでデフォルトになったって書いてあります。
Add example of configuration for SetCharacterEncodingFilter to the default web.xml file. (kkolinko)
web.xmlを見ると↓のようにorg.apache.catalina.filters.SetCharacterEncodingFilterってなってます。
<!-- Example filter to set character encoding on each request --> <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>EUC_JP</param-value>
って事で、コレはSolrのweb.xmlに↓のようにUTF-8で定義を追加します。
<filter> <filter-name>Set Character Encoding</filter-name> <filter-class>org.apache.catalina.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>
・その3. apache-solr-3.5.0examplesolrをパクってきてTOMCAT_HOMEの直下に置いて、 solr.solr.homeプロパティに設定してやります。 tomcat7.exeという実行ファイルでTomcatを起動していて、それにJavaVMの引数とか設定できなさそうだったので、 confcatalina.propertiesに以下を設定してやります。
#Solr configuration solr.solr.home=C:/Program Files/Apache Software Foundation/Tomcat 7.0/solr
■ 起動します… もう、なんなのよ… スタックトレースみると↓って言ってます。VelocityResponseWriterってなんだろう。。
Error loading class 'solr.VelocityResponseWriter'
ググったら同じように困ってる人を見かけました↓ http://lucene.472066.n3.nabble.com/solr-VelocityResponseWriter-error-in-version-3-5-0-td3570020.html その定義消すか、libディレクトリにコピってjarを入れなさい、と。 そもそもVelocityResponsWriterって何か?って言うと、 Velocityっていうテンプレートエンジンなフレームワークじゃないですか、と。 #その昔いきなり頓挫になったプロジェクトで使ってたな~。N澤君とか元気してっかなー。 #こいつをレスポンスで受け取ったら、今後自分たちの管理画面とかで楽出来るカモなんて思ったりもして。 #xmlとかjsonをパースしてどうのとか、なんだかんだで面倒くさいしねぇ。 solrのREADME.txtを読んでたら↓って書いてあったのでlibディレクトリを作ってそこにコピります。
Example "Solr Home" Directory ============================= ~略~ lib/ This directory is optional. If it exists, Solr will load any Jars found in this directory and use them to resolve any "plugins" specified in your solrconfig.xml or schema.xml (ie: Analyzers, Request Handlers, etc...). Alternatively you can use the syntax in solrconfig.xml to direct Solr to your plugins. See the example solrconfig.xml file for details.
↓こんな感じで。 起動したら、、、jarファイルのロードはしてるっぽいけど、、、
情報: Adding 'file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%207.0/solr/lib/velocity-1.6.4.jar' to classloader 3 02, 2012 4:07:01 午後 org.apache.solr.core.SolrResourceLoader replaceClassLoader 情報: Adding 'file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%207.0/solr/lib/velocity-LICENSE-ASL.txt' to classloader 3 02, 2012 4:07:01 午後 org.apache.solr.core.SolrResourceLoader replaceClassLoader 情報: Adding 'file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%207.0/solr/lib/velocity-NOTICE.txt' to classloader 3 02, 2012 4:07:01 午後 org.apache.solr.core.SolrResourceLoader replaceClassLoader 情報: Adding 'file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%207.0/solr/lib/velocity-tools-2.0.jar' to classloader 3 02, 2012 4:07:01 午後 org.apache.solr.core.SolrResourceLoader replaceClassLoader 情報: Adding 'file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%207.0/solr/lib/velocity-tools-LICENSE-ASL.txt' to classloader 3 02, 2012 4:07:01 午後 org.apache.solr.core.SolrResourceLoader replaceClassLoader 情報: Adding 'file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%207.0/solr/lib/velocity-tools-NOTICE.txt' to classloader
で、起動したら、また同じエラーで落ちてやがる…。 ↓見ると、安直にvelocityなんちゃらjarファイル入れればイイって分けじゃないみたいw http://wiki.apache.org/solr/VelocityResponseWriter って事で、 ダウンロードしてきたSolrのdistディレクトリにあった apache-solr-velocity-3.5.0.jar と、 ダウンロードしてきたSolrのcontirbディレクトリにあった commons-beanutils-1.7.0.jar commons-collections-3.2.1.jar velocity-1.6.4.jar velocity-tools-2.0.jar をsolrのlibディレクトリに突っ込んでやります。 って事で、ようやく管理画面の起動に成功しました~!メデタシメデタシ。