本文介绍的是Solr--4.4.0的安装
1.安装jdk环境(1.6及以上)及tomcat
2.下载官网solr的安装包solr-4.4.0.tgz并解压(此处以SOLR_DIR表示)
3.复制SOLR_DIR/dist/solr-4.4.0.war 到tomcat的webapps目录下(tomcat下部署项目的方式之一,这纯粹看个人喜好)并启动tomcat,此时查看tomcat的日志catalina.out 会发现报错如下
INFO: Reloading context [/solr-4.4.0]
Sep 24, 2013 9:59:38 AM org.apache.catalina.core.StandardContext stop
INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/solr-4.4.0] has not been started
Sep 24, 2013 9:59:38 AM org.apache.catalina.core.StandardContext start
SEVERE: Error filterStart
Sep 24, 2013 9:59:38 AM org.apache.catalina.core.StandardContext start
SEVERE: Context [/solr-4.4.0] startup failed due to previous errors
停止tomcat并移除war包(个人习惯)。
出现以上错误的原因是因为solr的war包中不包含日志的jar包,需要自己手动添加。
复制SOLR_DIR/example/lib/ext中的jar包到tomcat的lib下,同时复制日志配置文件SOLR_DIR/example/resources中的log4j.properties到tomcat的lib下
同时此时配置solr的home目录,打开tomcat下webapps/solr-4.4.0/WEB-INF/web.xml文件搜索entry 找到如下
<!--
<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>
-->
并配置自己的solr/home,此处被注释,记得删除注释符。(此处以SOLR_HOME表示)
启动tomcat,此时查看tomcat的日志catalina.out 会发现报错如下
226 [main] INFO org.apache.solr.core.ConfigSolr – /root/solr/home/solr.xml does not exist, using default configuration
339 [main] INFO org.apache.solr.core.CoreContainer – New CoreContainer 2097953288
340 [main] INFO org.apache.solr.core.CoreContainer – Loading cores into CoreContainer [instanceDir=/root/solr/home/]
372 [main] INFO org.apache.solr.handler.component.HttpShardHandlerFactory – Setting socketTimeout to: 0
372 [main] INFO org.apache.solr.handler.component.HttpShardHandlerFactory – Setting urlScheme to: http://
373 [main] INFO org.apache.solr.handler.component.HttpShardHandlerFactory – Setting connTimeout to: 0
373 [main] INFO org.apache.solr.handler.component.HttpShardHandlerFactory – Setting maxConnectionsPerHost to: 20
373 [main] INFO org.apache.solr.handler.component.HttpShardHandlerFactory – Setting corePoolSize to: 0
373 [main] INFO org.apache.solr.handler.component.HttpShardHandlerFactory – Setting maximumPoolSize to: 2147483647
374 [main] INFO org.apache.solr.handler.component.HttpShardHandlerFactory – Setting maxThreadIdleTime to: 5
374 [main] INFO org.apache.solr.handler.component.HttpShardHandlerFactory – Setting sizeOfQueue to: -1
374 [main] INFO org.apache.solr.handler.component.HttpShardHandlerFactory – Setting fairnessPolicy to: false
386 [main] INFO org.apache.solr.client.solrj.impl.HttpClientUtil – Creating new http client, config:maxConnectionsPerHost=20&maxConnections=10000&socketTimeout=0&connTimeout=0&retry=false
573 [main] INFO org.apache.solr.logging.LogWatcher – Registering Log Listener [Log4j (org.slf4j.impl.Log4jLoggerFactory)]
600 [coreLoadExecutor-3-thread-1] INFO org.apache.solr.core.CoreContainer – Creating SolrCore 'collection1' using instanceDir: /root/solr/home/collection1
601 [coreLoadExecutor-3-thread-1] INFO org.apache.solr.core.SolrResourceLoader – new SolrResourceLoader for directory: '/root/solr/home/collection1/'
610 [coreLoadExecutor-3-thread-1] ERROR org.apache.solr.core.CoreContainer – Failed to load file /root/solr/home/collection1/solrconfig.xml
613 [coreLoadExecutor-3-thread-1] ERROR org.apache.solr.core.CoreContainer – Unable to create core: collection1
org.apache.solr.common.SolrException: Could not load config for solrconfig.xml
at org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:592)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:657)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:364)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:356)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
Caused by: java.io.IOException: Can't find resource 'solrconfig.xml' in classpath or '/root/solr/home/collection1/conf/', cwd=/opt/local/apache-tomcat-6.0.37
at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:322)
at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:287)
at org.apache.solr.core.Config.<init>(Config.java:116)
at org.apache.solr.core.Config.<init>(Config.java:86)
at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:120)
at org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:589)
... 11 more
616 [coreLoadExecutor-3-thread-1] ERROR org.apache.solr.core.CoreContainer – null:org.apache.solr.common.SolrException: Unable to create core: collection1
at org.apache.solr.core.CoreContainer.recordAndThrow(CoreContainer.java:1150)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:666)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:364)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:356)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
Caused by: org.apache.solr.common.SolrException: Could not load config for solrconfig.xml
at org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:592)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:657)
... 10 more
Caused by: java.io.IOException: Can't find resource 'solrconfig.xml' in classpath or '/root/solr/home/collection1/conf/', cwd=/opt/local/apache-tomcat-6.0.37
at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:322)
at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:287)
at org.apache.solr.core.Config.<init>(Config.java:116)
at org.apache.solr.core.Config.<init>(Config.java:86)
at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:120)
at org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:589)
... 11 more
从错误日志可以看出,缺少俩文件solr.xml及solrconfig.xml,这两个文件可以在SOLR_DIR/example/solr及SOLR_DIR/example/solr/collection1/conf找到。
复制solr.xml到SOLR_HOME下,复制solrconfig.xml到SOLR_HOME/collection1/conf下,重启tomcat,此时再查看日志,solr已正常启动
4.web查看http://localhost:8080/solr-4.4.0