本文主要是介绍Solr6.4.1 安装部署到 Tomcat 8 (环境篇:Window10),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这两天在看Solr,尝试使用了最新版Solr6.4.1。正常情况下,不需要做什么,只要解压后,在bin目录运行solr start就可以跑起来。但是,查了网上很多都是用Solr+Tomcat的方式。自己也就想尝试一下看看什么不同,毕竟Tomcat用的也比较多。看了很多仁兄的帖子,方式基本一致和完整。不知道是版本问题,还是其它原因,总有一两个关键点没有描述,所以即使用最新版本搭建环境,也会出问题。所以把所有问题及过程梳理一下,希望其他人少走几步弯路。
一、环境说明
- Windows 10-x64
- apache-tomcat-8.0.35-x64(解压版)
- jdk-8u112-windows-x64 (网上都说必须用jdk1.8,否则会出错。因为电脑里一直用的就是JDK1.8,所以偷了个懒,也没有进行验证)
- solr-6.4.1
二、部署步骤
(1)JDK和Tomcat安装
这里自我一把,搞Java开发应该都知道,就不在这里说了。
后面用“apache-tomcat-8.0.35”,来指代我本地tomcat的放置目录。
(2)解压solr
将下载好的Solr,下载到指定目录。
后面用“solr-6.4.1”,来指代我本地solr的放置目录。
(3)进行拷贝
将【solr-6.4.1\server\solr-webapp】下的“webapp”文件夹,整个拷贝到【Apache-tomcat-8.0.35\webapps】目录下,并将webapp重命名为solr
针对这个命名有两种说法:一种说可以随便改,一种说最好写成solr,因为跟solr/home配置查询有关。现阶段我还没有验证,为了减少自己不懂的问题出现,暂且用第二种方式。
将【solr-6.4.1\server\lib\ext】下的所有jar包拷贝到【Apache-tomcat-8.0.35\webapps\solr\WEB-INF\lib】
看过很多帖子都只说到这里,只是拷贝【solr-6.4.1\server\lib\ext】下的jar包,实际上solr无法正常启动,访问http://localhost:8080/solr/index.html,会出现404错误,如下图:
在【Apache-tomcat-8.0.35\logs】目录下,查看日志会发现错误:
22-Feb-2017 10:05:36.365 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.filterStart Exception starting filter SolrRequestFilterjava.lang.NoClassDefFoundError: com/codahale/metrics/MetricSetat 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:4660)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5298)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1092)at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834)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.MetricSetat org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1139)... 20 more
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
实际上是找不到metrics相关的包,所以还要将【solr-6.4.1\server\lib】下的所有metrics-.jar包拷贝到【Apache-tomcat-8.0.35\webapps\solr\WEB-INF\lib】*
3.将【solr-6.4.1\server\resources】下的log4j.properties配置文件拷贝到【apache-tomcat-8.0.35\webapps\solr\WEB-INF\classes】,如果WEB-INF下没有classes文件那么就创建一个classes文件夹
4.将【solr-6.4.1\server\solr】文件夹拷贝到任意非中文目录或者位置下,将其名字修改为“solrhome”。“solrhome”包含的内容如下:
5.修改【apache-tomcat-8.0.35\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>
- 1
- 2
- 3
- 4
- 5
默认是注解掉,放开注解,并将中的值修改为刚刚步骤7中的solrhome目录,如:E:/solrHome
6.一般到这一步,基本上说就可以运行solr,但实际上还会出现,如下图所示的403错误: 。这个主要是由于在【Apache-tomcat-8.0.35\webapps\solr\WEB-INF\web.xml】文件中,有一段代码
<!-- Get rid of error message --><security-constraint><web-resource-collection><web-resource-name>Disable TRACE</web-resource-name><url-pattern>/</url-pattern><http-method>TRACE</http-method></web-resource-collection><auth-constraint/></security-constraint><security-constraint><web-resource-collection><web-resource-name>Enable everything but TRACE</web-resource-name><url-pattern>/</url-pattern><http-method-omission>TRACE</http-method-omission></web-resource-collection></security-constraint>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
将其注释掉即可。
7. 启动tomcat,在控制台出现下图所示内容,说明Solr启动成功。
8.访问http://localhost:8080/solr/index.html,出现下图:
参考资料:
[1]:http://www.cnblogs.com/zhi-leaf/p/5935928.html
[2]:http://blog.csdn.net/qq_14806125/article/details/53014019
[3]:http://m.blog.csdn.net/article/details?id=53199355
这篇关于Solr6.4.1 安装部署到 Tomcat 8 (环境篇:Window10)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!