记录Solr6.4.2环境搭建

在很多博客中说,solr5.0之后已经内置了jetty服务器,不过我并没有去考证,我所用的6.4.2中是已经内置了jetty服务器。但是项目中用的是Tomcat,所以本文是针对发布到Tomcat上的。

1.准备工作

  • JDK1.8
    官网教程中明确指出了solr运行在Java8以上。
quick start.png
system requirements.png
  • solr6.4.2
  • Tomcat8.5.12
    这边需要注意,如果使用7或者更低的版本,在访问solr的时候会出现错误,在某些博客上了解到solr5.5以上必须在Tomcat8以上才能运行。我最初发布在7.6上出现以下错误:java.lang.NoSuchMethodError:javax.servlet.ServletInputStream.isFinished()Z

2.环境搭建

  • /solr-6.4.2/server/solr-webapp/下的webapp文件夹copy到apache-tomcat-8.5.12/webapps/目录下,为了方便识别,最好将webapp重命名,我这边命名为solr。copy完成后的目录如下:
tomcat下的solr目录.png
  • solr-6.4.2/server/lib/ext下所有的jar包copy到apache-tomcat-8.5.12/webapps/solr/WEB-INF/lib/目录下。
  • solr-6.4.2/server/resources/下的log4j.properties文件copy到apache-tomcat-8.5.12/webapps/solr/WEB-INF/classes/目录下,如果不存在classes文件夹,那么就新建一个。
  • apache-tomcat-8.5.12/webapps/solr/目录下创建一个solrhome目录,并且将solr-6.4.2/server/solr/目录下的所有文件copy到solrhome中。
  • 修改apache-tomcat-8.5.12/webapps/solr/WEB-INF/web.xml,找到如下代码(在40行左右):
    <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>
    放开注解,将<env-entry-value>中的值修改为solrhome的路径。

此时基本的配置工作大致完成,接下来就跑起来,看看效果了。

3.测试

  • 启动Tomcat

我用的是mac pro,所以需要通过命令来启动🐱,在apache-tomcat-8.5.12/bin/目录下打开终端,输入命令./startup.sh,启动成功的话,显示如下:

Using CATALINA_BASE:   /XXX/apache-tomcat-8.5.12
Using CATALINA_HOME:   /XXX/apache-tomcat-8.5.12
Using CATALINA_TMPDIR: /XXX/apache-tomcat-8.5.12/temp
Using JRE_HOME:        /jdk1.8.0_51.jdk/Contents/Home
Using CLASSPATH:       /XXX/Downloads/apache-tomcat-8.5.12/bin/bootstrap.jar:/XXX/Downloads/apache-tomcat-8.5.12/bin/tomcat-juli.jar
Tomcat started.

如果在启动的时候出现以下错误或者类似以下的错误:

-bash: ./startup.sh: Permission denied

Permission denied 表示对此文件的权限不够,这边执行的是startup.sh文件,说明当前用户对此文件不具备执行权限(x)。既然找到了原因,解决起来就很方便了,给予此文件足够的权限就行了,mac或者linux下可以通过chmod命令去设置权限,例如:chmod a+x *.sh。可以通过ls -l命令去查看文件的详细信息。

这边不仅仅只有这个启动文件会出现权限的问题,比如启动的时候tomcat/logs/下面的文件也有可能出现权限问题。其实不管什么问题,仔细阅读终端上的错误信息,对症下药就好

顺利启动🐱之后,在浏览器上输入http://loalhost:8080,就能访问到🐱的主页:

Tomcat首页.png

可以点击左边的的Manager App按钮去查看当前部署在🐱下面的web应用,需要输入登录的帐号密码,这个可以到apache-tomcat-8.5.12/conf/tomcat-users.xml去添加用户,并给用户添加相应角色

<tomcat-users xmlns="http://tomcat.apache.org/xml"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
          version="1.0">
<!--
  NOTE:  By default, no user is included in the "manager-gui" role required
  to operate the "/manager/html" web application.  If you wish to use this app,
  you must define such a user - the username and password are arbitrary. It is
  strongly recommended that you do NOT use one of the users in the commented out
  section below since they are intended for use with the examples web application.
-->
<!--
  NOTE:  The sample user and role entries below are intended for use with the
  examples web application. They are wrapped in a comment and thus are ignored
  when reading this file. If you wish to configure these users for use with the
  examples web application, do not forget to remove the <!.. ..> that surrounds
  them. You will also need to set the passwords to something appropriate.
-->
<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
  <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
  <user username="role1" password="<must-be-changed>" roles="role1"/>
-->
  <role rolename="manager-gui"/>
  <role rolename="admin-gui"/>
  <user username="root" password="root" roles="admin-gui,manager-gui"/>
</tomcat-users>

注释上写的很清楚,要进入Manager App就需要manage-gui具有角色权限的用户,具有admin-gui角色的用户可以进入Host Manager,暂时就简单这样理解了,具体的这边就不去深究了。进入到Tomcat Web Application Manager,效果如下:

manager.png
  • 访问solr首页

可以看到solr也已经发布成功,处于 running状态。

如果进入此页面你发现solr的running状态是false,然后点击Commands栏目下的start按钮,在顶部的Message栏中出现的信息是:FAIL - Application at context path /solr could not be started ,很明确的告诉我们,solr无法启动,在这边无法拿到具体的错误信息,此时只能去看Tomcat的日志文件了,找到apache-tomcat-8.5.12/logs/目录下的localhost.2017-03-23.log的日志文件,open一下,找到caused by,明确告诉我们找不到com.codahale.metrics.MetricSet这个类,既然是缺少类,只要找到对应的jar包就ok了。

localhost.2017-03-23.log.png

那么另一个问题来了,这个jar该去哪找呢?别急!在搭建的时候,solr所需要的jar是从solr-6.4.2/server/lib/ext这个目录下copy过来的,会不会漏了呢?再次进去看看:

solr-6.4.2/server/lib/ext/.png

好想并没有遗漏,但是仔细一看发现跟ext同级的目录下有metrics-xx-xxx.jar,和我们缺少的类名很相似哇,因此我将metrics-core-3.1.2.jar以及metrics-jvm-3.1.2.jar这两个jar包(经过多次试验才得知需要这两个jar)copy到了apache-tomcat-8.5.12/webapps/solr/WEB-INF/lib/下,重新启动🐱,再次进入 manager App,发现solr应用已经成功发布,处于running状态,遇到类似错误,还是那句话,查看log,对症下药

接着访问http://localhost:8080/solr/index.html,如果出现403 — Foridden,这个错误:

403.png

则需要修改apache-tomcat-8.5.12/webapps/solr/WEB-INF/web.xml文件,将文件最下面的一段xml代码注释掉(这段配置代码是安全约束配置,拒绝了所有对于这个资源的访问,大概是这个意思):
web.xml.png

刷新浏览器,重新访问solr主页,终于:

solr主页.png

到这步,算是搭建成功了,大功告成!(一开始创建solr文件夹的时候,写成了sorl,结果导致访问首页时,不显示versions这些基本信息)

4. 后序

整个搭建过程,真心觉得十分坎坷,渣渣如我,就是因为遇到这么多的问题,才准备记录下来,便于自己查看也希望可以给他人带来一定的帮助。我相信还会有更多的坑在等着我,没有办法,只能接着干了!

其实还遇到一个问题,早上在写这篇文章的时候,重新启动Tomcat,重新访问solr,出现500错误,日志如下:


500.png

暂时还未找到解决方法,找到方法后会补上解决方案。不过我重新搭建之后还未重现此问题,如果有大神不幸看到,麻烦您提供下解决方法,先谢谢您!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 安装tomcat 8.0 楼主实在 tomcat 8 下进行的安装配置,各位看官可以任意选择 tomcat 版本(...
    南山羊阅读 5,229评论 0 2
  • 1 准备工作及相关介绍 solr和lucene的版本是同步更新的,最新版本是6.5.0。本案例使用4.10.3 j...
    阿太哥阅读 6,882评论 1 5
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,020评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,308评论 19 139
  • 《如何在30秒内说出关键点》18分钟60页 理解率80%左右 如何在30秒内说出关键点?恰当使用钩子,要维持听众的...
    筱苏籽阅读 643评论 0 0