Debian

如何在“Catalina/localhost”下的 XML 文件中覆蓋預設的“solr.home”?

  • May 28, 2015

我正在嘗試在同一主機上配置 Solr 的兩個實例,並且我想覆蓋solr.home每個實例。

我按照Solr Tomcat wikiCatalina/localhost/中的建議創建了兩個文件:

$ cat solr-prod.xml 
<Context docBase="webapps/solr-prod.war" debug="0" crossContext="true" >
  <Environment name="solr/home" type="java.lang.String" value="/opt/solr-prod/home" override="true" />
</Context>
$ cat solr-qa.xml 
<Context docBase="webapps/solr-qa.war" debug="0" crossContext="true" >
  <Environment name="solr/home" type="java.lang.String" value="/opt/solr-qa/home" override="true" />
</Context>

順便提一句。我嘗試使用絕對路徑,但沒有成功。

但是,在 Tomcat 重新啟動後,它會忽略我的配置:

$ sudo sh -x /etc/init.d/tomcat7 start
...
+ catalina_sh start
+ sed s/\"/\\\"/g
+ echo -Djava.awt.headless=true -Dsolr.solr.home=/opt/solr/home -Dsolr.data.dir=/opt/solr/data -Xmx128m -XX:+UseConcMarkSweepGC
+ JAVA_OPTS=-Djava.awt.headless=true -Dsolr.solr.home=/opt/solr/home -Dsolr.data.dir=/opt/solr/data -Xmx128m -XX:+UseConcMarkSweepGC

通過設置它自己的-Dsolr.solr.home-Dsolr.solr.home我不知道它來自哪裡。

上面的配置文件是根據Tomcat Web Application Manager/manager/html.

問題是當我通過 web 訪問我的 Solr4 實例時,我可以看到 Args 為它們設置了:

-Dsolr.data.dir=/opt/solr/data
-Dsolr.solr.home=/opt/solr/home

所以似乎我的環境變數由於某種原因被忽略了,它被參數覆蓋了。

我在或 in (已註釋)的任何地方都沒有/opt/solr硬編碼參數。/var/lib/tomcat7``/usr/share/tomcat7``WEB-INF/web.xml

任何想法如何正確設置這些環境變數?

我在solr.homesolr.data中找到了這些預設設置/etc/default/tomcat7

其他可能的位置可能在:/usr/share/tomcat7/defaults.template作為 的一部分JAVA_OPTS

從那裡刪除 solr 變數,它允許根據定義的配置文件使用單獨的 solr 實例conf/Catalina/localhost

因此,對於每個實例,都應創建單獨的 XML 文件。

例如:

<Context docBase="webapps/solr.war" debug="0" crossContext="true" >
  <Environment name="solr/home" type="java.lang.String" value="/opt/solr/home" override="true" />
</Context>

其中valueofsolr/home是 solr 的路徑,/opt/solr/home或者/var/lib/solr(無論您擁有或已經選擇的路徑)。

引用自:https://serverfault.com/questions/695053