帶有tomcat 6的Solr 4.4在tomcat管理器上拋出503
系統詳細資訊:
作業系統:Cent OS 5.5 x86_64
java - 1.7 (1.7.0_25)
tomcat:6.0.37
solr 4.4(配置為多核)
我在碼頭上完美執行了 solr 4.4 多核(儘管目前只執行一個核心)。
我需要在 tomcat 6 上執行相同的程序,看看它是否可以比碼頭更好。
這是我所做的: 1.從http://mirrors.sonic.net/apache/tomcat/tomcat-6/v6.0.37/bin/apache-tomcat-6.0.37.tar.gz
下載了 tomcat 6
2.將apache-tomcat-6.0.37.tar.gz解壓到/usr/local/tomcat/
創建啟動和關閉腳本,程序通過user:group tomcat:tomcat查看啟動腳本,發現tomcat執行正常. 我將埠從 8080 修改為 8400
3.在tomcat下為solr app創建了一個solr.xml: 文件:/usr/local/tomcat/conf/Catalina/localhost/solr.xml
<?xml version="1.0" encoding="utf-8"?> <Context docBase="/var/www/projects/solr-oncars/example/solr/solr-4.4.0.war" debug="0" privileged="true" allowLinking="true" crossContext="true"> <Environment name="solr/home" type="java.lang.String" value="/var/www/projects/solr-oncars/example/solr" override="true" /> </Context>
4. 複製 solr.war 到 core 的 home-path
cp /var/www/projects/solr-oncars/example/webapps/solr.war /var/www/projects/solr-oncars/example/solr/oncars/
甚至嘗試使用 solr-4.4.war
cp /var/www/projects/solr-oncars/dist/solr-4.4.0.war /var/www/projects/solr-oncars/example/solr/
5. 編輯 solrconfig.xml
**5.a:**我嘗試
從以下位置編輯 solrconfig.xml 中的數據目錄:
<dataDir>${solr.core0.data.dir:}</dataDir>
到:
<dataDir>${solr.core0.data.dir:/var/www/projects/solr-oncars/example/solr/oncars/data}</dataDir>
5.b上面的設置還原後我也試過了
6. 將 slf4j jar 複製到 tomcat: 當我嘗試從 tomcat 管理器啟動 solr 應用程序時,在 catalina 日誌中遇到很多 sl4j 錯誤。這是通過將 sl4j 庫從 solr 複製到 tomcat 來解決的。如下所示:
cp -v /var/www/projects/solr-oncars/example/lib/ext/slf4j-* /usr/local/tomcat/lib/ cp -v /var/www/projects/solr-oncars/example/lib/ext/log4j-1.2.16.jar /usr/local/tomcat/lib/
從 1 到 6 完成了從 tomcat 執行現有的 solr。在 Tomcat 管理器下,“/solr”顯示為已啟動。Stop 和 Start 一樣不會拋出錯誤。
我可以看到 solr 文件夾是在 tomcat 的 webapps 下創建的:
ll webapps/solr/
輸出:
-rw-r--r-- 1 tomcat tomcat 5642 Jul 10 11:11 admin.html drwxr-xr-x 3 tomcat tomcat 4096 Sep 19 18:53 css -rw-r--r-- 1 tomcat tomcat 1146 Jul 10 11:11 am favicon.ico drwxr-xr-x 4 tomcat tomcat 4096 Sep 19 18:53 img drwxr-xr-x 4 tomcat tomcat 4096 Sep 19 18:53 js drwxr-xr-x 2 tomcat tomcat 4096 Sep 19 18:53 META-INF drwxr-xr-x 2 tomcat tomcat 4096 Sep 19 18:53 tpl drwxr-xr-x 3 tomcat tomcat 4096 Sep 19 18:53 WEB-INF
當從 tomcat 管理器中點擊 /solr 時,即 URL:http ://localdomain.com:8400/solr/ 出現以下頁面:
HTTP 狀態 503 - 伺服器正在關閉 類型狀態報告 消息伺服器正在關閉 描述 請求的服務目前不可用。 Apache Tomcat/6.0.37
SOLR 配置: /var/www/projects/solr-oncars/example/solr/solr.xml:
<?xml version="1.0" encoding="UTF-8" ?> <solr persistent="true"> <cores adminPath="/admin/cores"> <core schema="schema.xml" name="oncars" instanceDir="oncars" conf="solrconfig.xml"/> </cores> </solr>
我曾嘗試在網上尋找幫助,但找不到任何有效的方法。甚至來自 serverfault 的資源
問題可能出在 solr 上,因為我們最初修改了 solrconfig,後來在試錯過程中甚至修改了 solr.xml(屬於 solr)。
所以,我從零開始又做了整件事。這次我提到了另一個相當相關的 How-To
總的來說,我犯的錯誤是對 solr 進行更改。不要那樣做!
Solr Tomcat Wiki建議:“ **Solr4.3 需要完全不同的部署。**這些說明不是最新的,適用於不確定的 Solr 版本。”
使用 wiki,您往往會點擊索引而錯過精美的印刷品!我已經提到了它,因此弄亂了工作 solr(幸運的是我已經備份了)。從我提到的 How-To 中,我學到了以下內容:
1 不要更改正在工作的 solr 配置(即從碼頭執行 solr 以檢查它是否啟動正常)
2 在添加 solr 之前啟動並執行 tomcat。(獨立執行。如果您對兩者都很好,請停止這兩個服務)
3 假設solr路徑是/usr/local/solr-4.x,然後將solr-4.x.war從/usr/local/solr-4.x/dist/solr-4.xxwar複製到/usr/local /solr-4.x/example/solr/solr.war 。_ 這就是您在 solr 目錄中需要做的所有事情。休息,你需要從 solr 目錄中取出幾個文件到 tomcat 目錄(pt. 6)
4 修改tomcat的server.xml,確保裡面有URIEncoding:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
5 在 tomcat 的 conf 中創建 solr.xml:vim /usr/local/tomcat/conf/Catalina/localhost/solr.xml 添加以下行:
<Context path="/solr" docBase="/usr/local/solr/example/solr/solr.war" debug="0" crossContext="true"> <Environment name="solr/home" type="java.lang.String" value="/usr/local/solr/example/solr" override="true"/> </Context>
注意: solr 核心位於路徑下:/usr/local/solr/example/solr/core{0,1,..n}
6 將 Solr 擴展文件和 log4j 配置文件複製到 tomcat:
cp -v /usr/local/solr/example/lib/ext/* /usr/local/tomcat/lib/ cp -v /usr/local/solr-oncars/example/resources/log4j.properties /usr/local/tomcat/conf/
對於其餘部分,請與“操作方法”進行交叉檢查
最後,將 tomcat 所有權授予 solr 和 tomcat 目錄(如果 tomcat 作為使用者/組“tomcat”執行):
chown -R tomcat:tomcat /usr/local/tomcat chown -R tomcat:tomcat /usr/local/solr
啟動tomcat並訪問solr-url,它成功了!