CentOS下Solr7.4.0安装部署到Tomcat最全详细教程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daerzei/article/details/81334182

前言

操作系统:CentOS6.9 64位
Solr版本:Solr7.4.0
Tomcat版本:apache-tomcat-8.5.4
之前一直用Solr6,其实Solr7部署下来和Solr6是一样的。

部署

第一步:下载安装包

下载Solr7.4.0:

wget http://mirrors.hust.edu.cn/apache/lucene/solr/7.4.0/solr-7.4.0.tgz

下载Tomcat:

wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.4/bin/apache-tomcat-8.5.4.tar.gz

第二步:解压

添加执行权限:

chmod u+x solr-7.4.0.tgz

chmod u+x apache-tomcat-8.5.4.tar.gz

解压安装包:

mkdir -p /opt/modules/solr7
tar -zxf apache-tomcat-8.5.4.tar.gz -C /opt/modules/solr7/

tar -zxf solr-7.4.0.tgz -C /opt/modules/solr7/

# 将apache-tomcat重命名为tomcat-solr

mv apache-tomcat-8.5.4 tomcat-solr

第三步:部署到Tomcat

Solr 解压后server/solr-webapp下一个webapp目录,它就是Solr的Web项目,把它复制到tomcat的webapps目录下并改名为solr

# 进入Solr的server目录下
/opt/modules/solr7/solr-7.4.0/server/solr-webapp/

# 复制webapp目录到tomcat-solr的webapps目录下
cp -r webapp/ /opt/shortcut/tomcat-solr/webapps

# 将Solr的web应用改名
cd /opt/shortcut/tomcat-solr/webapps

mv webapp/ solr

第四步:配置solr_home

这个目录用于存储Solr Core的数据及配置文件
创建solr_home存储Solr索引文件

cd /opt/modules/solr7/

mkdir solr_home

解压后的Solr的server目录下有一个solr目录,把这个目录里的所有内容复制到刚刚创建的solr_home目录下:

# 切换到server/solr
cd /opt/modules/solr7/solr-7.4.0/server/solr

# 复制solr目录下所有内容到solr_home
cp -r * /opt/modules/solr7/solr_home/

CentOS下Solr7.4.0安装部署到Tomcat8_01.png

第五步:配置Tomcat

5.1 修改web.xml

修改复制到tomcat中的Solr项目中的WEB-INF目录下的web.xml配置文件
修改solr_home路径指向我们刚刚创建的solr_home

cd /opt/modules/solr7/tomcat-solr/webapps/solr/WEB-INF
vim web.xml

<!-- 修改Solr_home路径 -->
<env-entry>
   <env-entry-name>solr/home</env-entry-name>
   <env-entry-value>/opt/modules/solr7/solr_home</env-entry-value>
   <env-entry-type>java.lang.String</env-entry-type>
</env-entry>

CentOS下Solr7.4.0安装部署到Tomcat8_02.png

5.2 去掉安全验证

还是在web.xml文件中,把安全验证的去掉,不然每次登陆都需要用户名密码验证,麻烦

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

CentOS下Solr7.4.0安装部署到Tomcat8_03.png

5.3 复制所需依赖jar包

复制所需jar包到WEB-INF目录下的lib目录下
复制solr-7.4.0\server\lib\ext下的所有jar包到tomcat下的webapps\solr\WEB-INF\lib目录下

cd /opt/modules/solr7/solr-7.4.0

cp server/lib/ext/* /opt/modules/solr7/tomcat-solr/webapps/solr/WEB-INF/lib/

复制solr-7.4.0\server\lib下的metrics开头的5个jar到tomcat下的webapps\solr\WEB-INF\lib目录下

metrics-core-3.2.2.jar
metrics-ganglia-3.2.2.jar
metrics-graphite-3.2.2.jar
metrics-jetty9-3.2.2.jar
metrics-jvm-3.2.2.jar

cp server/lib/metrics-* /opt/modules/solr7/tomcat-solr/webapps/solr/WEB-INF/lib/

复制solr-7.4.0\dist 下的solr-dataimporthandler-7.4.0.jarsolr-dataimporthandler-extras-7.4.0.jar 是数据导入的时候用到,看情况导入,Solr用了这么久Solr数据导入的功能还没有用到过

cp dist/solr-dataimporthandler-* /opt/modules/solr7/tomcat-solr/webapps/solr/WEB-INF/lib/

5.4 修改Tomcat端口号

修改Tomcat的端口号,改不改都行,不过最好改一下,以后如果有多个Tomcat会有端口冲突的

vim apache-tomcat-8.5.4/conf/server.xml

修改8080、8009端口号
Solr常用的端口号是8983,可以把8080改成8983,
8009端口随意,这里改成8909

<Connector port="8983" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

修改solr_home目录下的solr.xml配置文件

vim solr_home/solr.xml

# 将主机名和端口号修改为自己的主机名和端口号
# 如果主机名没有映射IP地址的话用IP地址
<str name="host">${host:cm02.spark.com}</str>
<int name="hostPort">${tomcat.port:8983}</int>

CentOS下Solr7.4.0安装部署到Tomcat8_04.png
看其他的教程是没有这一步的,我也试了下把这一步去掉,其实也是可以的,不过最好配置一下,默认的hostPort的值是${jetty.port:8983},很明显这是jetty的配置。

5.5 为Tomcat分配指定内存

为Tomcat分配指定大小的内存
修改tomcat-solr目录下的bin/catalina.sh

vim bin/catalina.sh

# 添加如下配置
JAVA_OPTS="-Xms4g -Xmx4g"

CentOS下Solr7.4.0安装部署到Tomcat8_05.png
一般生产环境不可能使用Tomcat默认的内存,都是需要为Tomcat分配指定的内存的,我们的集群从10G到60G不等,不过自己搞着玩儿分小点。

创建Solr Core

第一步: 为Core创建数据目录

在solr_home目录下创建目录名为:new_core
这个就是我们后面要创建的Solr Core,当然你也可以改成自己想要的名字

cd /opt/modules/solr_home/

mkdir new_core

第二步: 为Core准备配置文件

将configsets目录下的sample_techproducts_configs目录下的conf文件夹复制到test目录下

cp -r configsets/sample_techproducts_configs/conf/ new_core/

第三步:启动tomcat

cd /opt/modules/tomcat-solr

远程在浏览器里访问一下:http://192.168.60.99:8983/solr/index.html
CentOS下Solr7.4.0安装部署到Tomcat8_06.png

第四步:创建SolrCore

CentOS下Solr7.4.0安装部署到Tomcat8_07.png
截图中schema配置文件显示的是schema.xml,这是以前的配置,Solr6.6及以后的版本出于弱字段类型的考虑都使用managed-schema,Solr会自动链接到它的
然后Solr就变成这样了
CentOS下Solr7.4.0安装部署到Tomcat8_08.png
CentOS下Solr7.4.0安装部署到Tomcat8_09.png

SolrJ的简单Demo

public static void main(String[] args) throws IOException, SolrServerException {
    String solrUrl = "http://cm02.spark.com:8983/solr/new_core";
    HttpSolrClient client = new HttpSolrClient.Builder(solrUrl).build();
    System.out.println("============= add doc =============");
    Collection<SolrInputDocument> docs = new ArrayList<>();
    for (int i = 1; i <= 3; i++) {
        SolrInputDocument doc = new SolrInputDocument();
        //公有的字段
        doc.addField("id", UUID.randomUUID().toString());
        doc.addField("name", "dddddddddddddddddd");
        doc.addField("filename_s", "zhonggggmaiaiadadadddddddddddddddddddddddddd");
        docs.add(doc);
    }
    UpdateResponse rsp = client.add(docs);
    System.out.println("Add doc size" + docs.size() + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
    UpdateResponse rspcommit = client.commit();
    System.out.println("commit doc to index" + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
    System.out.println(rspcommit.toString());
}

执行一下:
CentOS下Solr7.4.0安装部署到Tomcat8_10.png

在Solr管理界面查看执行结果:
CentOS下Solr7.4.0安装部署到Tomcat8_11.png

OK,至此单机版Solr部署完成了。

猜你喜欢

转载自blog.csdn.net/daerzei/article/details/81334182