第一章、Solr环境搭建

这里,solr采用tomcat运行,对于solr6+,需要tomcat8+&jdk8+

1.下载需要的软件

 Solr6.1.0jdk1.8.0_102apache-tomcat-8.5.5

 

2.配置Tomcat运行的jdk

编辑tomcat的启动脚本bin/startup.bat

set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_102

 

3.配置部署文件solr.xml

编辑tomcat目录下的文件(没有就新建):conf\Catalina\localhost\solr.xml

 

<Context path="/solr" docBase="D:\develop\solr\webapp6.1.0" reloadable="false" crossContext="true">
	<Environment name="solr/home" type="java.lang.String" value="D:\develop\solr\home" override="true"/>
</Context>
 其中:
  • path:项目访问路径,如http://localhost/solr/
  • docBase:solr的web工程路径
  • Environment:solr/home变量指定solr的目录
  • 如果不这么做就需要修改solr项目的web.xml文件,启用其中的env-entry配置,显然这种方式对solr修改更少、更佳

4.配置solr/home目录

根据前面的配置新建需要的solr/home目录,如上的D:\develop\solr\home目录

复制solr-6.1.0\server\solr下的所有文件到D:\develop\solr\home

5.验证

至此,solr的环境基本搭建完成,启动tomcat,输入url验证:

http://localhost:8080/solr/index.html

6.异常篇

1)缺少metrics-*相关jar包

19-Apr-2017 17:08:43.718 严重 [localhost-startStop-2] org.apache.catalina.core.StandardContext.filterStart Exception starting filter SolrRequestFilter
 java.lang.NoClassDefFoundError: com/codahale/metrics/MetricSet
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
	at java.lang.Class.getConstructor0(Class.java:3075)
	at java.lang.Class.newInstance(Class.java:412)
	at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:119)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4572)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5215)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:596)
	at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1805)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.codahale.metrics.MetricSet
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285)
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
	... 20 more
 可以从solr源码目录中的server/lib/下复制相关的 metrics-*包到web的lib目录中

2)缺少日志相关的jar包

19-Apr-2017 17:22:03.890 严重 [localhost-startStop-1] org.apache.catalina.core.StandardContext.filterStart Exception starting filter SolrRequestFilter
 java.lang.NoClassDefFoundError: Failed to initialize Apache Solr: Could not find necessary SLF4j logging jars. If using Jetty, the SLF4j logging jars need to go in the jetty lib/ext directory. For other containers, the corresponding directory should be used. For more information, see: http://wiki.apache.org/solr/SolrLogging
	at org.apache.solr.servlet.CheckLoggingConfiguration.check(CheckLoggingConfiguration.java:27)
	at org.apache.solr.servlet.BaseSolrFilter.<clinit>(BaseSolrFilter.java:30)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at java.lang.Class.newInstance(Class.java:442)
	at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:119)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4572)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5215)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:596)
	at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1805)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

 可以从solr源码目录中的server/lib/ext下复制日志相关的jar包到web的lib目录中 

3)访问拒绝403

HTTP Status 403 - Access to the requested resource has been denied

注释掉web.xml中<security-constraint>元素这一段(限制了对solr资源的访问,注释掉就可以访问了)。

返回目录

猜你喜欢

转载自marionette.iteye.com/blog/2328927