1 准备安装环境

说明: 在企业项目开发中, 大多使用Tomcat服务器构建Solr服务.

  • 软件环境:

    l OS: macOS Sierra 10.12.6

    | Solr: 4.10.4

    l JDK: 1.8.0_131

    l Web服务器: Tomcat 7.0.82

Solr需要运行在Servlet容器中, 且Solr 4.10.4要求JDK版本在1.7及以上.

上传Solr安装包至/data/solr目录下, 并解压:

mkdir -p /data/solr
tar -zxf solr-4.10.4.tgz

2 通过内部Jetty服务器启动

Solr本身集成了Jetty服务器, 可直接启动运行:

(1) 打开cmd命令/终端窗口, 进入Solr解压目录中的example目录.

(2) 执行启动命令: java -jar start.jar, 等一小会儿, 发现cmd命令/终端窗口被阻塞了, 说明启动成功.

(3) 启动成功, 访问: http://127.0.0.1:8983/solr

3 通过配置Tomcat服务器启动

这里将Tomcat拷贝至SolrHome所在工程(work)的同级目录下:

mkdir -p /data/solr/tomcat  && cd /data/solr/tomcat
# 将tomcat解压至此目录下
tar -zxf apache-tomcat-7.0.82.tar.gz

3.1 删除不需要的应用

删除tomcat/webapps下的所有默认应用, 减少服务器启动时发布的项目, 防止通过Tomcat管理界面攻击Solr服务器.

3.2 修改服务端口

修改apache-tomcat-7.0.82/conf/server.xml文件(修改的目的是避免端口冲突).

(1) 将Server port修改为“7005”:

(2) 将HTTP/1.1的Connector port修改为“7070”:

(3) 将AJP/1.3(服务器内部通信用)的Connector port修改为“7009”:

3.3 部署solr.war

(1) 找到Solr安装包example/webapps/solr.warWeb项目包, 解压缩:

# 使用jar命令解压缩
jar -xvf solr.war solr
# 解压缩之后, 删除solr.war包, 防止Tomcat自动解压缩此包, 导致配置被覆盖
rm -rf solr.war

(2) 部署solr项目: 创建存放solr应用的目录, 并将解压后的solr.war拷贝至此目录下:

cd /data/solr
mkdir -p tomcat/display/solr
# 将所有文件拷贝至solr目录下
cp -r solr-4.10.4/example/webapps tomcat/display/solr

(3) 使用Tomcat的虚拟目录安装: 这里没有将Solr服务添加到Tomcat的webapps目录下, 所以需要修改Tomcat的 $TOMCAT_HOME/conf/server.xml 文件, 添加Solr的服务路径:

说明: 这里将Solr服务部署在 /data/solr/tomcat/display/solr 路径下.

<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- 配置访问路径, 效果为: http://ip:port/solr -->
<Context path="/solr" privileged="true"
docBase="/data/solr/tomcat/display/solr">
<Environment name="solr/home" type="java.lang.String" override="true"
value="/data/solr/tomcat/solrhome"/>
</Context>
<!-- ... ... -->
</Host>

参数说明:

path: 指定访问该Web应用的名称, 即 http://ip:port/solr 中端口号之后的部分;

docBase: 指定Web应用的文件路径, 如果是war包, 必须加上后缀;

<Environment>节点就是设置solr/home的目录, 用来存放各个Collection的索引文件.

(4) 配置其他文件:

a. 拷贝Solr解压包下的log4j.properties文件至Solr服务的WEB-INF/classes下:

cd /data/solr/tomcat
mkdir -p display/solr/WEB-INF/classes
cp /data/solr/solr-4.10.4/example/resources/log4j.properties display/solr/WEB-INF/classes

b. 拷贝Solr解压包下example/lib/ext中的所有jar包拷贝到Solr服务的WEB-INF/lib下:

cp -r /data/solr/solr-4.10.4/example/lib/ext/*  display/solr/WEB-INF/lib

c. 拷贝Solr解压包下example/solr/solr.xml到solrhome下(必须存在, 否则Solr服务将不能正常发布):

cd /data/solr/tomcat && mkdir solrhome
cp -r /data/solr/solr-4.10.4/example/solr/solr.xml solrhome

d. 拷贝Solr解压包下的example/solr/collection1至tomcat目录下的collection中, 用作SolrCore的配置文件:

cd /data/solr/tomcat
cp -r /data/solr/solr-4.10.4/examplesolr/collection1 solrhome

(5) 启动Tomcat服务:

运行Tomcat安装bin目录中的startup.bat/startup.sh文件:

sh startup.sh

(6) 启动成功后的测试:

在cmd命令/终端窗口看到Tomcat启动后, 访问 http://127.0.0.1:7070/solr, 如果能出现Solr Web页面, 说明单机版的Solr服务已经成功部署.

注意: Solr4.0后将日志包作了抽取, 没有打包到solr.war中. 这里有两种方式加载这些包:

① 将example/lib/ext下的所有包复制到Solr的WEB-INF/lib目录下;

② 将这些包复制到Tomcat容器中的${TOMCAT_HOME}/lib下面(官网推荐).

3.4 扩展: 虚拟目录发布Web项目的另一种思路

将上述标签的所有内容单独建立为一个文件, 文件名为path的值;

然后将文件放入 ${TOMCAT_HOME}/conf/Catalina/localhost/ 目录下;

启动Tomcat时, 将自动加载此配置文件的信息, 启动Tomcat后, 直接访问path路径即可.

4 配置多个SolrCore

4.1 多SolrCore的好处

(1) Solr工程对外通过SorlCore提供服务, 一个SolrCore相当于数据库中的一张表, 需要注意的是, 这个功能就相当于一个数据库中存在多张表;

(2) 将索引数据分SolrCore存储,方便对索引数据管理维护;

(3) 在多Shard和Replica中一个SolrCore只存储一张表的部分数据;

(4) SolrCloud(Solr集群)中要用到多Core.

4.2 配置步骤

(1) 复制collection1(修改名称为collection2):

(2) 修改core.properties文件中的名称(若使用solr的运行目录或UI管理页面创建core, 则无需设置此项):

  name=collection2

(3) 重新启动Tomcat:

版权声明

作者: 马瘦风

出处: 博客园 马瘦风的博客

您的支持是对博主的极大鼓励, 感谢您的阅读.

本文版权归博主所有, 欢迎转载, 但请保留此段声明, 并在文章页面明显位置给出原文链接, 否则博主保留追究相关人员法律责任的权利.

Solr04 - 在Jetty和Tomcat上部署Solr单机服务的更多相关文章

  1. Solr学习笔记-在Tomcat上部署执行Solr

    上一篇我们初识了Solr而且学习了Jetty的启动方式.查看了Solr的管理界面,这一篇我们来实如今Tomcat上部署执行Solr. 部署环境: window7 jdk1.6.0_14 Solr-4. ...

  2. 编写简单的spring mvc程序,在tomcat上部署

    编写简单的spring mvc程序,在tomcat上部署 1 用java 配置spring mvc ,可以省去web.xmlpackage hello;import org.springframewo ...

  3. 一个tomcat上部署多个项目,并通过不同端口号访问不同的项目

    原文:http://www.cnblogs.com/kismetv/p/7228274.html#title3-1 现在以部署两个项目为例: 第一步:修改tomcat下的server.xml文件 配置 ...

  4. 【JVM】linux上tomcat中部署的web服务,时好时坏,莫名其妙宕机,报错:There is insufficient memory for the Java Runtime Environment to continue.

    =========================================================================================== 环境: linu ...

  5. idea导出war包并在tomcat上部署

    生成war包 (一)进入项目配置页面 然后到达: (二)选择 设置好路径 然后apply (三)生成 然后再指定的目录就可以看见war包了. 部署到tomcat上 (一)将war包拷贝到tomcat的 ...

  6. Linux环境下在Tomcat上部署JavaWeb工程

    本文讲解如何将我们已经编译好的JavaWeb工程在Linux环境下的Tomcat上进行部署,总体上的思路是和Windows下JavaWeb项目部署到tomcat差不多,具体步骤和命令如下. 注:部署之 ...

  7. Dubbo入门到精通学习笔记(二):Dubbo管理控制台、使用Maven构建Dubbo的jar包、在Linux上部署Dubbo privider服务(shell脚本)、部署consumer服务

    文章目录 Dubbo管理控制台 1.Dubbo管理控制台的主要作用: 2.管理控制台主要包含: 3.管理控制台版本: 安装 Dubbo 管理控制台 使用Maven构建Dubbo服务的可执行jar包 D ...

  8. linux上部署rmi+memcache服务

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/50020437 最近在学习linux上搭建Rmi+Memca ...

  9. Solr 09 - SolrJ操作Solr单机服务 (Solr的Java API)

    目录 1 SolrJ是什么 2 SolrJ对索引的CRUD操作 2.1 创建Maven工程(打包方式选择为jar) 2.2 配置pom.xml文件, 加入SolrJ的依赖 2.3 添加和修改索引 2. ...

随机推荐

  1. python kafka权限校验client.id

    kafka集群有权限校验,在连接时需要加入client.id.但pykafka不能配置该选项.搜索了一下,需要使用confluent-kafka 链接: https://blog.csdn.net/l ...

  2. 我对PMO的理解(持续更新)

    PMO的价值 为项目管理提供方法上的指导,对项目的实施过程提供监督.评价. PMO应该从哪方面着手建立管理体系 如何量化工作 如何考评工作 如何激励员工 如何进行人工.成本核算 如何进行进度跟踪与控制 ...

  3. Linux环境下Hadoop集群搭建

    Linux环境下Hadoop集群搭建 前言: 最近来到了武汉大学,在这里开始了我的研究生生涯.昨天通过学长们的耐心培训,了解了Hadoop,Hdfs,Hive,Hbase,MangoDB等等相关的知识 ...

  4. 动态规划——Dungeon Game

    这又是个题干很搞笑的题目:恶魔把公主囚禁在魔宫的右下角,骑士从魔宫的左上角开始穿越整个魔宫到右下角拯救公主,为了以最快速度拯救公主,骑士每次只能向下或者向右移动一个房间, 每个房间内都有一个整数值,负 ...

  5. CF76A.Gift [最小生成树]

    CF76A.Gift 题意:noi2014魔法森林弱化版QwQ,最小化\(max(g_i)*G + max(s_i)*S\)的最小生成树 考虑按g升序加边,用已在生成树中的边和新加入的边求当前最小生成 ...

  6. may be a diary?

    [About Me] SD某弱校高二的OIer. qq 995681518,欢迎一起交流~ 喵喵喵喵喵 "当你想要颓废的那一刻,想一想当初为什么走到了这里." 以下文字充满负面情绪 ...

  7. python_非阻塞套接字及I/O流

    http://www.cnblogs.com/lixy-88428977/p/9638949.html 首先,我们要明确2个问题: 普通套接字实现的服务端有什么缺陷吗? 有,一次只能服务一个客户端! ...

  8. django默认模板引擎和jinja2模板引擎

    在使用中,大家会发现django默认模板引擎有很多局限性,最明显的就是四则运算.就只能加减,乘除都不支持.另外还有判断相等,不能直接if,要用ifequal.确实不太方便.还有一点,django默认模 ...

  9. summary of week

    Summary of week Catalog 计算机基础 解释器 编码 数据类型 输入 输出 变量 注释 运算符 条件判断 循环 Content 计算机基础 计算机组成 软件 解释器 操作系统 : ...

  10. Hive+Sqoop+Mysql整合

    Hive+Sqoop+Mysql整合 在本文中,LZ随意想到了一个场景: 车,道路,监控,摄像头 即当一辆车在道路上面行驶的时候,道路上面的监控点里面的摄像头就会对车进行数据采集. 我们对采集的数据进 ...