Solr整合Tomcat

一、Solr与Tomcat整合:

  虽然Solr内部提供有小型的WEB容器,但是在实际的开发之中,如果要想使用Solr往往是结合Tomcat完成使用的,那么也就意味着需要在Tomcat之中配置一个专属的Solr项目(虚拟目录)。

1. 如果要想在Tomcat中进行Solr服务的配置,那么一定需要创建有一个基本的工作目录,该目录之中需要保存有solr的一些核心内容:

mkdir -p /solr/{webapp,home,logs}

  webapp:保存所有的Web相关的配置,Tomcat的启动需要Web结构支持、home:保存Solr的主配置文件、log:保存所有的日志文件。

2. 为“webapp”拷贝内容:

cp -r /usr/local/solr/server/solr-webapp/webapp/* /solr/webapp/

3. 拷贝核心的依赖组件:

cp -r /usr/local/solr/server/lib/ext/* /solr/webapp/WEB-INF/lib/          //拷贝ext扩展开发包
cp -r /usr/local/solr/server/lib/metrics-*.* /solr/webapp/WEB-INF/lib/       //拷贝检索依赖库
cp -r /usr/local/solr/dist/solr-dataimporthandler-* /solr/webapp/WEB-INF/lib/   //拷贝数据导入依赖库
cp /usr/local/solr/server/lib/http2-* /solr/webapp/WEB-INF/lib/           //拷贝Http2依赖库

4. 为Home目录拷贝核心索引配置内容:

cp -r /usr/local/solr/server/solr/* /solr/home/

5. 在webapp中配置home目录:vim /solr/webapp/WEB-INF/web.xml

  》在头部位置追加:

<env-entry>
    <env-entry-name>solr/home</env-entry-name>
    <env-entry-value>/solr/home</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
</env-entry>

  》取消所有的安全配置项(先注释掉):

<!--
  <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>
-->

6. Solr使用了log4j进行日志的定义,配置lo4j:

  》如果要使用所有的属性文件,按照WEB开发标准,这些文件应该放在“WEB-INF/classes”目录之中,创建此目录:

mkdir -p /solr/webapp/WEB-INF/classes

  》将log4j文件拷贝到此目录:

cp /usr/local/solr/server/resources/* /solr/webapp/WEB-INF/classes/

  》修改log4j2.xml配置文件日志输出位置:vim /solr/webapp/WEB-INF/classes/log4j2.xml

%s/${sys:solr.log.dir}//solr/logs/g    //在命令行模式下,进行替换

7. 在Tomcat中添加Solr的虚拟目录:vim /usr/local/tomcat/conf/server.xml

<Context path="/solr" docBase="/solr/webapp"/>    //在<Host>节点中添加虚拟目录

8. 启动Tomcat:

/usr/local/tomcat/bin/catalina.sh stop
/usr/local/tomcat/bin/catalina.sh start

9. 通过浏览器进行访问:http://192.168.28.226/solr/index.html

 二、安全访问:现在Solr通过浏览器谁都可以访问,可以借助Tomcat设置用户名、密码

1. 在Tomcat中设置用户名、密码:vim /usr/local/tomcat/conf/tomcat-users.xml

<role rolename="solr"/>                      //角色
<user username="solr" password="123456" roles="solr"/>   //用户信息

2. 在Solr的配置问价中进行对应角色的设置:vim /solr/webapp/WEB-INF/web.xml

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Solr</web-resource-name>
        <url-pattern>/</url-pattern>
        <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>solr</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Solr-Realm</realm-name>
</login-config>

3. 配置完毕,进行Tomcat的重新启动:

/usr/local/tomcat/bin/catalina.sh stop
/usr/local/tomcat/bin/catalina.sh start

4. 通过浏览器进行访问时需要登录:http://192.168.28.226/solr/index.html

三、Core配置:

  虽然这个时候已经成功的实现了Solr工具的正确部署和配置,但是这个时候的Solr还无法为用户提供任何的检索服务的,应为没有所谓的Core存在,在Solr之中Core是整个的处理核心,功能就是进行数据的检索操作,但是如果没有进行任何的配置,是无法进行Core创建的,一旦创建会产错误。

1. 为solr/home创建子目录:mkdir -p /solr/home/solr-core/conf

2. 拷贝solr开发包:cp -r /usr/local/solr/server/solr/configsets/_default/conf/* /solr/home/solr-core/conf/

3.拷贝core的依赖库:

cp -r /usr/local/solr/contrib/ /solr/home/
cp -r /usr/local/solr/dist/ /solr/home/

4. 修改核心配置文件目录:vim /solr/home/solr-core/conf/solrconfig.xml

%s/${solr.install.dir:../../../..}/${solr.install.dir:..}/g      //在命令行模式下进行替换

5. 修改完毕,进行Tomcat的重新启动:

/usr/local/tomcat/bin/catalina.sh stop
/usr/local/tomcat/bin/catalina.sh start

6. 浏览器进行访问:http://192.168.28.226/solr/index.html

  进行core的创建,以后core的名称尽量用“happy-core”这种格式。

原文地址:https://www.cnblogs.com/luliang888/p/11153681.html