我正在尝试在同一主机上配置两个 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/tomcat7
WEB-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>
其中value
ofsolr/home
是到 solr 的路径,可以是/opt/solr/home
或/var/lib/solr
(无论您有还是已经选择了什么路径)。