ubuntu之无法让 Solr 4.8 与 Tomcat 7 和 Ubuntu 12.04 一起工作

exmyth 阅读:40 2024-02-13 20:32:18 评论:0

我正在尝试让 Solr 4.8 在 Ubuntu 12.04 服务器上的 Tomcat 7 下运行,它将使用 sunspot_rails gem 从 Rails 4 应用程序访问。

现在我只是用 Solr 4.8 的多核示例进行测试,以验证它是否在默认配置下工作。

Tomcat 运行良好(curl localhost:8080 返回“正在运行”页面),而且我在 Tomcat 或 Solr 日志中看不到任何错误。但是curl localhost:8080/solr没有返回任何东西,curl localhost:8080/solr/update返回请求的资源(/solr/update)是不可用。(我在本地主机上使用 curl,因为我无法远程访问 Tomcat 7 管理员或 Solr 管理员)。

我已将示例中的 solr.war 文件复制到多核,并将所有 jar 文件和 log4j.properties 复制到 tomcat7/lib(基本上只是按照此处的说明进行操作,但对于 4.8当然 http://gagannaidu.blogspot.no/2014/02/apache-solr-461-tomcat7-setup-on-ubuntu.html ):

sudo cp /usr/share/solr/example/webapps/solr.war /usr/share/solr/example/multicore/solr.war 
 
sudo cp -r solr/example/lib/ext/* /usr/share/tomcat7/lib 
 
sudo cp -r solr/example/resources/log4j.properties /usr/share/tomcat7/lib 

我还将多核文件夹的所有者设置为 tomcat7:

sudo chown -R tomcat7 /usr/share/solr/example/multicore 

这是我的配置文件:

/var/lib/tomcat7/conf/Catalina/localhost 中的

solr.xml:

<Context docBase="/usr/share/solr/example/multicore/solr.war" debug="0" privileged="true" allowLinking="true" crossContext="true"> 
  <Environment name="solr/home" type="java.lang.String" value="/usr/share/solr/example/multicore" override="true" /> 
</Context> 
/usr/share/solr/example/multicore 中的

solr.xml:

<solr persistent="false"> 
  <cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:8983}" hostContext="${hostContext:solr}"> 
    <core name="core0" instanceDir="core0" /> 
    <core name="core1" instanceDir="core1" /> 
 
    <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory"> 
      <str name="urlScheme">${urlScheme:}</str> 
    </shardHandlerFactory> 
  </cores> 
</solr> 

我试过将 hostPort 更改为 "${jetty.port:8080}" 或只是 "8080" 但这似乎没有帮助。

有人知道我可以做些什么来让它工作吗?

请您参考如下方法:

好的,终于让它在这里工作了。

这是我做的:

1) 我再次下载了 Solr 4.8,解压并移动到 /usr/share/solr .

2) 我将 solr.war 复制到 solr 示例而不是多核示例中:

sudo cp /usr/share/solr/example/webapps/solr.war /usr/share/solr/example/solr/solr.war 

3) 然后我复制了 jar 和日志文件:

sudo cp -r solr/example/lib/ext/* /usr/share/tomcat7/lib 
sudo cp -r solr/example/resources/log4j.properties /usr/share/tomcat7/lib 

4) 我将/usr/share/tomcat7/lib/log4j.properties 中的日志路径设置为(然后创建文件):

solr.log=/usr/share/solr 
 
touch solr.log 

(在/usr/share/solr/内)

5) 我将以下内容放入 solr.xml/var/lib/tomcat7/conf/Catalina/localhost :

<?xml version="1.0" encoding="UTF-8"?> 
<Context docBase="/usr/share/solr/example/solr/solr.war" debug="0" crossContext="true"> 
  <Environment name="solr/home" type="java.lang.String" value="/usr/share/solr/example/solr" override="true" /> 
</Context> 

6) 我在/usr/share/solr/example/solr/solr.xml 中将 hostPort 更改为 8080:

<int name="hostPort">8080</int> 

7) 最后,我将用户 **tomcat7 设置为/usr/share/solr 文件夹的所有者:

sudo chown -R tomcat7 /usr/share/solr 

这可能可以稍微清理一下,从 Solr 分发中删除不必要的文件和示例,但至少它让我启动并运行。

对于那些想将它与 sunspot_rails gem 一起使用的人,您需要替换 schema.xml里面的文件/usr/share/solr/example/solr/collection1/conf使用你的 Rails 项目中的一个,并为你的 sunspot.yml 做这样的事情文件:

production: 
  solr: 
    hostname: localhost 
    port: 8080 
    log_level: WARNING 
    path: /solr 

更新:

添加我完整的 solr.xml 文件以供引用:

<solr> 
 
  <solrcloud> 
    <str name="host">${host:}</str> 
    <int name="hostPort">8080</int> 
    <str name="hostContext">${hostContext:solr}</str> 
    <int name="zkClientTimeout">${zkClientTimeout:30000}</int> 
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool> 
  </solrcloud> 
 
  <shardHandlerFactory name="shardHandlerFactory" 
    class="HttpShardHandlerFactory"> 
    <int name="socketTimeout">${socketTimeout:0}</int> 
    <int name="connTimeout">${connTimeout:0}</int> 
  </shardHandlerFactory> 
 
</solr> 


标签:Tomcat
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号