Solr(一):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)进行拷贝

  1. 将【solr-6.4.1\server\solr-webapp】下的“webapp”文件夹,整个拷贝到【Apache-tomcat-8.0.35\webapps】目录下,并将webapp重命名为solr

    针对这个命名有两种说法:一种说可以随便改,一种说最好写成solr,因为跟solr/home配置查询有关。现阶段我还没有验证,为了减少自己不懂的问题出现,暂且用第二种方式。

  2. 将【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错误,如下图:
Solr(一):Solr6.4.1 安装部署到 Tomcat 8 (环境篇:Window10)_第1张图片

在【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 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.(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.MetricSet
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1139)
    ... 20 more

实际上是找不到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”包含的内容如下:
Solr(一):Solr6.4.1 安装部署到 Tomcat 8 (环境篇:Window10)_第2张图片

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>  

默认是注解掉,放开注解,并将中的值修改为刚刚步骤7中的solrhome目录,如:E:/solrHome

6.一般到这一步,基本上说就可以运行solr,但实际上还会出现,如下图所示的403错误:
这里写图片描述。这个主要是由于在【Apache-tomcat-8.0.35\webapps\solr\WEB-INF\web.xml】文件中,有一段代码


  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Disable TRACEweb-resource-name>
      <url-pattern>/url-pattern>
      <http-method>TRACEhttp-method>
    web-resource-collection>
    <auth-constraint/>
  security-constraint>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Enable everything but TRACEweb-resource-name>
      <url-pattern>/url-pattern>
      <http-method-omission>TRACEhttp-method-omission>
    web-resource-collection>
  security-constraint>

将其注释掉即可。
7. 启动tomcat,在控制台出现下图所示内容,说明Solr启动成功。
Solr(一):Solr6.4.1 安装部署到 Tomcat 8 (环境篇:Window10)_第3张图片

8.访问http://localhost:8080/solr/index.html,出现下图:

Solr(一):Solr6.4.1 安装部署到 Tomcat 8 (环境篇:Window10)_第4张图片

参考资料:

[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

你可能感兴趣的:(solr,solr)