1. 程式人生 > >CentOS下Solr7.4.0安裝部署到Tomcat最全詳細教程

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/

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

第四步:建立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部署完成了。