solr+tomcat+zookeeper配置

solr+tomcat+zookeeper配置

2015年1月刚入职新公司时,项目中有用到了solr,但只搞了一个商品标签搜索,领导让我研究一下,把商品的搜索和标签搜索一起放到solr里,放两个核心,当时放两个核心时折腾了好久,好在搞出来了,当时最新版本是solr-4.10.3,现在更新好多版本了,现在已经从老东家离职,突然想起那入职第一周从来没接触过这个,并搞定这个环境的安装,记下这段文字作纪念。当然了好多人推荐用elasticsearch做。用什么做看你自己的想法,看你领导的要求。。好吧,下面是当时的安装步骤。。。

需要用到以下的软件:

solr-4.10.3  zookeeper-3.4.6.tar.gz  apache-tomcat-7.0.57

 

首先在/opt 目录下新建 solr_platform (mkdir solr_platform)

 

进入 solr_platform (zookeeper solr tomcat 都安装在该目录中)

 

一 zookeeper安装

  1 解压缩zookeeper ———— tar -zxvf zookeeper-3.4.6.tar.gz

  2 在solr_platform目录下新建zookeeper_data和zookeeper_log文件夹(如图1)所示

 

图1155255_Ngr8_2705361.png

  3 修改配置:每台机器都复制conf下的zoo_sample.cfg为zoo.cfg,并在zoo.cfg删除以前的配置,加现如下配置

  tickTime=2000

  initLimit=10

  syncLimit=5

  dataDir=/opt/solr_platform/zookeeper_data

  dataLogDir=/opt/solr_platform/zookeeper_log

  clientPort=2181

  server.1=ip1:2888:3888

  #server.2=ip2:2889:3889

  #server.3=ip3:2890:3890

  注:其中ip1、ip2为机器的ip,添加前请确保每台机器的2888和3888端口没有被占用。(有多台机器,server.2,server.3就是其他机器的zookeeper)

 

155316_mkNq_2705361.png

  4 并且在zookeeper_data文件夹下新建myid文件,里面写一个1(文件没有后缀名,第二台机子myid文件里面写2,第三台写3以此内推)如(图2)所示

155325_bsvp_2705361.png

图2

 

二 solr安装

 

 1 首先在solr_platform目录下新建solr_home_1文件夹

 2 解压缩solr-4.10.3文件,将solr-4.10.3/example/solr所有的东西复制到 solr_home_1

 3 新建一个data-config.xml文件,添加如下内容:

 <?xml version="1.0" encoding="utf-8"?>   

<dataConfig> 

 <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"   

   url="jdbc:mysql://192.168.7.154:3306/merchant"   

   user="wechatadmin"   

   password="portal!(!)cp"/> 

   <document> 

      <entity name="label" pk="id" query="select a.id as id,a.name as name from mer_label a">   

          <field column="id" name="id" />   

          <field column="name" name="name" />    

      </entity>

 </document>  

</dataConfig>

并将该文件放在/opt/solr_platform/solr_home_1/collection1/conf目录中 如(图3)所示

155341_O6QY_2705361.png

(图3)

 

4 修改/opt/solr_platform/solr_home_1/collection1/conf目录下的solrconfig.xml文件

将如下内容  如(图4) (图5)所示

  <lib dir="${solr.install.dir:../../..}/contrib/extraction/lib" regex=".*\.jar" />

  <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-cell-\d.*\.jar" />

 

  <lib dir="${solr.install.dir:../../..}/contrib/clustering/lib/" regex=".*\.jar" />

  <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-clustering-\d.*\.jar" />

 

  <lib dir="${solr.install.dir:../../..}/contrib/langid/lib/" regex=".*\.jar" />

  <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-langid-\d.*\.jar" />

 

  <lib dir="${solr.install.dir:../../..}/contrib/velocity/lib" regex=".*\.jar" />

  <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-velocity-\d.*\.jar" />

  替换为:

  <lib dir="../../contrib/extraction/lib" regex=".*\.jar" />

 

  <lib dir="../../contrib/clustering/lib/" regex=".*\.jar" />

 

  <lib dir="../../contrib/dataimporthandler/lib/" regex=".*\.jar" />

 

  <lib dir="../../contrib/langid/lib/" regex=".*\.jar" />

 

  <lib dir="../../contrib/velocity/lib" regex=".*\.jar" />

  <lib dir="../../dist/" regex=".*\.jar" />

155356_ttHD_2705361.png

图4

155403_oMtW_2705361.png

图5

  在 solrconfig.xml文件<requestHandler name="/select" class="solr.SearchHandler"> 这一行前添加

 <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">   

 <lst name="defaults">   

  <str name="config">data-config.xml</str>   

 </lst>   

</requestHandler>

如(图6)所示

155421_6SBv_2705361.png

图6

 

5将解压缩的solr-4.10.3目录下的dist文件夹和contrib都拷贝到/opt/solr_platform/solr_home_1下 如(图7)所示

155430_eazz_2705361.png

图7

 

三 solr web端安装

1解压tomcat7并其重命名为tomcat_1,将solr-4.10.3\dist目录下的solr-4.10.3.war文件解压到 /opt/solr_platform/tomcat_1/webapps下

注:要手动解压

 

2在/opt/solr_platform/tomcat_1/webapps/solr/WEB-INF目录下新建classes文件夹

复制solr-4.10.3\example\resources目录下的log4j.properties文件到 /opt/solr_platform/tomcat_1/webapps/classes下(图8所示)

155438_VcnK_2705361.png

图8

 

3复制solr-4.10.3\example\lib\ext下所有的jar文件到/opt/solr_platform/tomcat_1/webapps/solr/WEB-INF/lib目录下 (图9所示)

155445_x2iz_2705361.png

图9

4复制solr-4.10.3\dist下的solr-dataimporthandler-4.10.3.jar,solr-dataimporthandler-extras-4.10.3.jar到/opt/solr_platform/tomcat_1/webapps/solr/WEB-INF/lib目录下

(图10)所示

155456_RUZq_2705361.png

5添加一个mysql-connector-java-5.1.20-bin.jar到/opt/solr_platform/tomcat_1/webapps/solr/WEB-INF/lib目录下(图11)所示

155504_weE8_2705361.png

图11

6将/opt/solr_platform/tomcat_1/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>

 改为:

    <env-entry> 

   <env-entry-name>solr/home</env-entry-name> 

   <env-entry-value>/opt/solr_platform/solr_home_1</env-entry-value> 

   <env-entry-type>java.lang.String</env-entry-type> 

</env-entry> 

如(图12,图13)所示

155516_tIZ4_2705361.png

图12

155521_wcqw_2705361.png

图13

 

四 复制/opt/solr_platform/solr_home_1/下的collection1文件夹重命名为:mycore

(图14)所示

155535_Uhyi_2705361.png

图14

1修改/opt/solr_platform/solr_home_1/mycore/conf下的data-config.xml为

<?xml version="1.0" encoding="utf-8"?>   

<dataConfig> 

 <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"   

   url="jdbc:mysql://192.168.7.154:3306/merchant"   

   user="wechatadmin"   

   password="portal!(!)cp"/> 

   <document> 

      <entity name="productname" query="select t.id,t.pro_name,t.label_name,CONVERT(t.audit_status,SIGNED) audit_status,CONVERT(t.publish_status,SIGNED) publish_status from mer_product t left join mer_black_user b  ON t.user_id = b.user_id WHERE b.ID IS  NULL AND t.audit_status IN (2, 4) AND t.publish_status = 1">   

          <field column="id" name="id" />   

          <field column="label_name" name="label_name" />   

             <field column="pro_name" name="pro_name" />

             <field column="publish_status" name="publish_status" />

             <field column="audit_status" name="audit_status" />

            

      </entity> 

 </document>  

</dataConfig> 

155601_Zujd_2705361.png

 

2在/opt/solr_platform/solr_home_1/mycore/conf下schema.xml文件添加

   <field name="pro_name" type="string" indexed="true" stored="true"/>

   <field name="label_name" type="string" indexed="true" stored="true"/> 

   <field name="publish_status" type="string" indexed="true" stored="true"/>

   <field name="audit_status" type="string" indexed="true" stored="true"/> 

 

3修改/opt/solr_platform/solr_home_1下的solr.xml文件

<solr>

    <cores adminPath="/admin/cores"  host="${host:}"  hostPort="${jetty.port:对应的tomcat端口号}" hostContext="${hostContext:solr}">

    <core name="collection1" instanceDir="collection1" />

      <core name="mycore" instanceDir="mycore" />

          <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">

      <str name="urlScheme">${urlScheme:}</str>

    </shardHandlerFactory>

  </cores>

</solr>

五tomcat配置信息

 1修改/opt/solr_platform/tomcat_1/bin下的catalina.sh文件

 添加配置

 JAVA_OPTS="-Dsolr.solr.home=/opt/solr_platform/solr_home_1 -Dbootstrap_conf=true -Dcollection.configName=myconftt  -DnumShards=2 -DzkHost=zookeeper机器ip:2181"

 -DzkHost指向的是zookeeper的址,-Dsolr.solr.home指向的是solr的配置信息,-DnumShards是几个碎片

 

六 将上面的tomcat整体复制一份重命名为tomcat_2,将solr_home_1整体复制一份重命名为solr_home_2

1 修改/opt/solr_platform/tomcat_2/bin下的catalina.sh文件

JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/opt/solr_platform/solr_home_2  -DzkHost=zookeeper机器ip:2181"

 

2 修改/opt/solr_platform/tomcat_2/webapps/solr/WEB-INF/web.xml文件

    <env-entry> 

   <env-entry-name>solr/home</env-entry-name> 

   <env-entry-value>/opt/solr_platform/solr_home_2</env-entry-value> 

   <env-entry-type>java.lang.String</env-entry-type> 

</env-entry>

 

七启动

启动时,先启动zookeeper,(bin/zkServer.sh start)

然后启动tomcat

注:ZooKeeper集群启动的时候,每个结点都试图去连接集群中的其它结点,先启动的肯定连不上后面还没启动的,所以上面日志前面部分的异常是可以忽略的。

 

 

 

 

 

转载于:https://my.oschina.net/lvzi98/blog/1559894

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值