CentOS下Solr7.4.0安裝部署到Tomcat最全詳細教程
前言
作業系統: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/
第五步:配置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>
####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>
-->
####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 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
第四步:建立SolrCore
截圖中schema配置檔案顯示的是schema.xml
,這是以前的配置,Solr6.6及以後的版本出於弱欄位型別的考慮都使用managed-schema
,Solr會自動連結到它的
然後Solr就變成這樣了
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());
}
執行一下:
在Solr管理介面檢視執行結果:
OK,至此單機版Solr部署完成了。