【问题标题】:Rails - Solr production server, connection refusedRails - Solr 生产服务器,连接被拒绝
【发布时间】:2016-04-15 20:09:40
【问题描述】:

我有一个使用 sunspot/solr 进行搜索功能的 rails 应用程序。这个应用程序在开发中运行良好,但现在我正在尝试将它部署到服务器上遇到问题。

我在 Ubuntu 14.04 一键图像上使用带有 Dokku 0.5.4 的 Digital Ocean droplet。

我第一次尝试启动并运行 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

这是我第一次尝试使用 sunspot/solr,但我看不到我在哪里搞砸了。我是否以正确的方式设置了 solr?

【问题讨论】:

    标签: ruby-on-rails solr sunspot dokku


    【解决方案1】:

    很可能,您的 Solr 未设置为侦听 localhost 接口,而仅侦听 mydomain.com 接口。

    要验证此假设,请在您的实例中执行 curl localhost:8983/solr/solr_sunspot_example 和 curl mydomain.com:8983/solr/solr_sunspot_example。如果第二个命令成功,而第一个命令则不成功。

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

    【讨论】:

      【解决方案2】:

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

      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"] %>
      

      【讨论】:

        猜你喜欢
        • 2012-03-04
        • 1970-01-01
        • 1970-01-01
        • 2019-02-18
        • 1970-01-01
        • 1970-01-01
        • 2016-02-23
        • 2013-04-14
        • 2016-05-02
        相关资源
        最近更新 更多