操作系统: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
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 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/
####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
<env-entry>
<env-entry-name>solr/homeenv-entry-name>
<env-entry-value>/opt/modules/solr7/solr_homeenv-entry-value>
<env-entry-type>java.lang.Stringenv-entry-type>
env-entry>
####5.2 去掉安全验证
还是在web.xml
文件中,把安全验证的去掉,不然每次登陆都需要用户名密码验证,麻烦
####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.jar
、solr-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>
看其他的教程是没有这一步的,我也试了下把这一步去掉,其实也是可以的,不过最好配置一下,默认的hostPort
的值是${jetty.port:8983}
,很明显这是jetty的配置。
####5.5 为Tomcat分配指定内存
为Tomcat分配指定大小的内存
修改tomcat-solr
目录下的bin/catalina.sh
vim bin/catalina.sh
# 添加如下配置
JAVA_OPTS="-Xms4g -Xmx4g"
一般生产环境不可能使用Tomcat默认的内存,都是需要为Tomcat分配指定的内存的,我们的集群从10G到60G不等,不过自己搞着玩儿分小点。
在solr_home目录下创建目录名为:new_core
这个就是我们后面要创建的Solr Core,当然你也可以改成自己想要的名字
cd /opt/modules/solr_home/
mkdir new_core
将configsets目录下的sample_techproducts_configs
目录下的conf文件夹复制到test目录下
cp -r configsets/sample_techproducts_configs/conf/ new_core/
cd /opt/modules/tomcat-solr
远程在浏览器里访问一下:http://192.168.60.99:8983/solr/index.html
截图中schema配置文件显示的是schema.xml
,这是以前的配置,Solr6.6及以后的版本出于弱字段类型的考虑都使用managed-schema
,Solr会自动链接到它的
然后Solr就变成这样了
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());
}
OK,至此单机版Solr部署完成了。