Debian
如何在“Catalina/localhost”下的 XML 文件中覆蓋預設的“solr.home”?
我正在嘗試在同一主機上配置 Solr 的兩個實例,並且我想覆蓋
solr.home
每個實例。我按照Solr Tomcat wiki
Catalina/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.home
和solr.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>
其中
value
ofsolr/home
是 solr 的路徑,/opt/solr/home
或者/var/lib/solr
(無論您擁有或已經選擇的路徑)。