Rails - Solr生产服务器,连接被拒绝

时间:2016-04-15 20:09:41

标签: ruby-on-rails solr sunspot dokku

我有一个使用太阳黑子/ solr搜索功能的rails应用程序。这个应用程序在开发中运行良好,但现在我正在尝试将它部署到服务器我遇到了麻烦。

我在Ubuntu 14.04上使用Dokku 0.5.4的Digital Ocean水滴一键点击图片。

我第一次尝试让Solr启动并运行时,我按照official sunspot github页面上的说明进行操作。尽管遵循了这封信的指示,但我无法让我的应用与Solr交谈。

由于链接指南中的教程有点陈旧。我决定旋转一个全新的液滴,然后再试一次,这次发现here稍微更近的方向。按照这些说明逐字记录后,我的rails应用程序仍然存在连接问题。

这是我得到的错误

RSolr::Error::ConnectionRefused: Connection refused - {:data=>"<?xml version=\"1.0\" encoding=\"UTF-8\"?><add><doc><field name=\"id\">Person 3</field><field name=\"type\">Person</field><field name=\"type\">ActiveRecord::Base</field><field name=\"class_name\">Person</field><field boost=\"2\" name=\"first_name_text\">Joe</field><field name=\"last_name_text\">Schmoe</field><field name=\"email_text\">joe@example.com</field></doc></add>", :headers=>{"Content-Type"=>"text/xml"}, :method=>:post, :params=>{:wt=>:ruby}, :query=>"wt=ruby", :path=>"update", :uri=>#<URI::HTTP http://localhost:8983/solr/solr_sunspot_example/update?wt=ruby>, :open_timeout=>nil, :read_timeout=>nil, :retry_503=>nil, :retry_after_limit=>nil}

我应该指出,当我导航到mydomain.com:8983时,我可以看到solr服务器正在运行。此外,当我运行service solr status时,我得到以下内容。

Found 1 Solr nodes:

Solr process 1164 running on port 8983
{
  "solr_home":"/var/solr/data/",
  "version":"5.2.1 1684708 - shalin - 2015-06-10 23:20:13",
  "startTime":"2016-04-15T19:38:29.651Z",
  "uptime":"0 days, 0 hours, 24 minutes, 17 seconds",
  "memory":"93.7 MB (%19.1) of 490.7 MB"}

这是我的sunspot.yml文件

production:
  solr:
    hostname: localhost
    port: 8983
    log_level: WARNING
    path: /solr/solr_sunspot_example

这是我第一次尝试使用太阳黑子/ solr而我无法看到我搞砸了。我是否以正确的方式设置solr?

2 个答案:

答案 0 :(得分:2)

最有可能的是,您的Solr未设置为侦听localhost接口并且只侦听mydomain.com接口。

要验证此假设,请从您的实例中执行curl localhost:8983/solr/solr_sunspot_examplecurl mydomain.com:8983/solr/solr_sunspot_example。如果第二个命令成功,而第一个命令不成功,那么情况就是如此。

您将有2个选项来解决它:要么指向配置以查询mydomain.com接口,要么将Solr配置更改为在localhost接口上侦听。后者将由sunspot.yml中的主机名设置控制(请参阅上面引用的github wiki页面)。

答案 1 :(得分:0)

生产配置中可能缺少用户和密码?

production:
  solr:
    hostname: point_to_solr_host
    port: 443
    log_level: WARNING
    path: /solr/solr_sunspot_example
    user: <%= ENV["SOLR_USER"] %>
    password: <%= ENV["SOLR_PASSWORD"] %>