如何覆盖“Catalina/localhost”下的 XML 文件中默认的“solr.home”?

如何覆盖“Catalina/localhost”下的 XML 文件中默认的“solr.home”?

我正在尝试在同一主机上配置两个 Solr 实例,并且我想覆盖solr.home每个实例。

我按照Catalina/localhost/建议创建了两个文件Solr Tomcat 维基

$ 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应用程序管理器/manager/html

问题是,当我通过 Web 访问我的 Solr4 实例时,我可以看到它们两个的 Args 都设置为:

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

因此,看来我的环境变量由于某种原因被忽略,并且被参数覆盖。

我没有在或(已被注释)中/opt/solr的任何地方硬编码参数。/var/lib/tomcat7/usr/share/tomcat7WEB-INF/web.xml

关于如何正确设置这些环境变量有什么想法吗?

答案1

我在 中找到了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>

其中valueofsolr/home是到 solr 的路径,可以是/opt/solr/home/var/lib/solr(无论您有还是已经选择了什么路径)。

相关内容