運行環境:
- JDK: 1.8.0_131
- Tomcat: 9.0.0.M21
- Solr: 6.5.1
注:1.建議打開兩個連接linux的窗口,一個負責 solr壓縮目錄,另外一個負責tomcat下的目錄,這樣在使用過程中就不需要來回切換路徑。
2.以下的Solr所有配置在Window中一樣適用,除了操作文件的過程需要命令外,其他沒有任何不同。
3.在操作前請先將用戶切換到root,否則有些操作可能不成功。或者在操作的每個命令前 加上sudo。如創建文件夾命令:sudo mkdir solr
4.如果可以請將solr運行在solr自帶的Jetty服務器內, 在solr 5.21之后已經刪除war包。有興趣可以看看Solr的wiki說明: Why No War
開始之前先說明后面目錄結構代表的意思:
1. <tomcat>: 指Tomcat的安裝目錄。
2. <solrhome>: 存放 home、contrib、dist三個文件夾的目錄
3. <solr>: Tomcat的webapps文件夾內的web應用 solr
4. <solr-6.5.1>:解壓solr壓縮包之后的目錄
例如: Tomcat的webapps文件夾內的 solr表示為: <tomcat>/webapps/solr/
第一步:
首先下載Solr,然后將 .tgz 格式的壓縮文件,上傳到 linux系統中,我這里使用的軟件是SecureFX,也可以使用WinSCP。看個人喜好,只要能上傳文件到linux即可。
1. 使用linux的 ll 命令查看當前目錄下的所有文件,當看到目錄下有 solr-6.5.1.tgz時候說明上傳成功。
2. 當前目錄解壓Solr,使用命令:
1 tar -zxvf solr-6.5.1.tgz
執行命令之后就可以看到 solr-6.5.1文件夾了
現在可以通過 cd ./solr-6.5.1/ 命令,進入文件夾
上面是solr-6.5.1目錄的結構,紅色指引是后面會需要用到的目錄
3. 切換到 Tomcat安裝目錄,進入 <tomcat>/webapps/ 目錄內創建 solr文件夾
1 mkdir solr
接着在 <solr-6.5.1> 目錄內,執行以下命令
1 cp -rf ./server/solr-webapp/webapp/* /opt/tomcat-solr/webapps/solr/
將 <solr-6.5.1>/server/solr-webapp/webapp/ 內的所有文件復制到 <tomcat>/webapps/solr/
當看到solr目錄中 多出了如下文件復制成功。
熟悉的 首頁 index.xml 和 WEB-INF web安全目錄。
4. 接着進入 <solr-6.5.1>/server/lib 目錄內, 可以看到眾多的依賴包,雖然很多但是我們只需要其中幾個而已
我們只需要 metrics 開頭的jar文件即可。現在執行如下命令
1 cp metrics-core-3.1.2.jar metrics-ganglia-3.1.2.jar metrics-graphite-3.1.2.jar metrics-jvm-3.1.2.jar /opt/tomcat-solr/webapps/solr/WEB-INF/lib/
2 cp ./ext/* /opt/tomcat-solr/webapps/solr/WEB-INF/lib/
拷貝 metrics 開頭的文件中 除了metrics-jetty9-3.1.2之外的其他文件到 <tomcat>/webapps/solr/ 目錄內
拷貝 ext 文件夾下的所有文件到 <tomcat>/webapps/solr/ 目錄內
然后在 <tomcat>/webapps/solr/WEB-INF/ 下創建java文件的編譯目錄 classes
1 mkdir classes
現在WEB-INF 下的結構如下
進入 <solr-6.5.1>/server/resources/ 目錄下,將日志的配置文件復制 <tomcat>/webapps/solr/WEB-INF/classes/
1 cp ./log4j.properties /opt/tomcat-solr/webapps/solr/WEB-INF/classes/
上面是復制了 日志配置文件之后的 classes目錄。solr web應用暫時配置完成,開始第二步。
第二步:
1. 在 <tomcat> 根目錄內創建solrhome文件夾 用於存放 solr的功能模塊需要的庫、solr jar文件、以及 solr的主目錄(home)
創建solrhome文件夾
1 mkdir solrhome
當然也可以在其他地方創建沒有強制一定要放在 Tomcat 根目錄下
復制 <solr-6.5.1> 根目錄下的dist、contrib 兩個文件夾
1 cp -rf ./dist/ ./contrib/ /opt/tomcat-solr/solrhome/
注:如果到現在還是只開着一個linux命令窗口,那么你會發現在兩個路徑切換是多么麻煩的一件事情。所以請打開兩個窗口。
在 <tomcat>/solrhome/ 內創建 home文件加,home文件是solr的主目錄。用於存放solr核心 core
1 mkdir home
這時候solrhome文件目錄結構如下
2. 復制 <solr-6.5.1>/server/solr/ 內的所有文件到 <tomcat>/solrhome/home/ 內
1 cp -rf ./server/solr/* /opt/tomcat-solr/solrhome/home/
home目錄結構如下
繼續在home文件夾下創建第一個核心 mycore(名稱隨意)
1 mkdir mycore
home目錄結構如下
再復制 <solr-6.5.1>/example/example-DIH/solr/solr/ 內所有核心core的配置文件到 <tomcat>/solrhome/home/mycore/ 目錄下
1 cp -rf example/example-DIH/solr/solr/* /opt/tomcat-solr/solrhome/home/mycore/
現在mycore的文件夾結構如下
core.properties可以設置 新的核心名稱
如:name=myCore1
不設置默認顯示 文件夾名稱, 下一步 進入conf文件夾下配置屬性文件
3. 修改功能模塊地址和sorl jar文件地址, 這里以 <tomcat>/solrhome/ 目錄為例(如果你安裝其他目錄,請參考目錄設置文件中的地址),我使用的vim編輯器,先打開solrconfig.xml
1 vim solrconfig.xml
移動光標到 路徑上,然后進入vim 可視化模式 Ctrl+v 模式。選中的部分為高亮。按d鍵刪除多行
修改后結果如下
每個核心core都有一個 存放索引文件和日志的目錄 data
如果有需要修改,可以在下圖位置修改data路徑
默認在核心core根目錄下,如果不使用默認路徑可以修改為存放data的路徑 例如:
注:如果此處編輯之后無法保存,那么你可能不是用root權限打開。
4. 好了,solrhome的設置基本完成,那么最后就是關聯 solr web應用和 home目錄(不是solrhome)
打開 <tomcat>/webapps/solr/WEB-INF/ 目錄下的web.xml配置文件
修改entry地址如下
注:1.此處使用的是我自己設置的 home目錄,所以設置路徑時候 根據個人設置的 home 路徑設置配置文件
2.記得打開 <!-- --> 注釋
3.是home路徑 不是 solrhome。home文件下存儲的是核心core
然后跳到web.xml配置文件最后。注釋掉一下兩個標簽
如果不注釋,那么訪問solr的時候會出現一下錯誤:
- HTTP Status 403 - Access to the requested resource has been denied:拒絕訪問
最后一步
進入 <tomcat>/bin/ 目錄執行 ./startup.sh 命令,啟動Tomcat
當出現 Tomcat started時候 說明tomcat已經啟動成功了。
注:如訪問solr不成功,可以執行 ./catalina.sh run ,命令窗口就可以打印出執行的信息(有時執行./startup.sh命令 並不會出現執行信息)。
這時候就可以訪問solr試試
當出現以上界面,說明 solr可以訪問了。上圖也顯示了 創建了核心 core,如果需要可以在home下創建多個和核心core。
注:訪問solr時候在網址后面需要添加 /index.html路徑否則無法訪問。web.xml中已經設置了 歡迎頁面是 index.html依然無法訪問solr。出現該問題原因,應該是solr版本問題,在舊版本中,將solr部署到Tomcat下可以成功的訪問(5.2.1之前solr還有war包)。如果直接將solr運行在自帶的Jetty服務器內,可以通過 http://localhost/solr 地址直接訪問,不需要添加 /index.html。所以可以的話請將solr運行在自帶的Jetty服務器上,以避免出現不可預知的情況。
總結:
solr部署,簡單點說就是一下兩點:
一:webapps中創建好solr web應用,包括solr的依賴包和擴展jar文件等
二:創建solrhome目錄,保存 模塊功能和solr的jar包 以及home主目錄
最后將solr web應用和solrhome目錄關聯即可。
至此solr在linux中的安裝完成, 文章有很多不足的地方,歡迎大家指正。謝謝!