Rails - Solr 生产服务器,连接被拒绝
Rails - Solr production server, connection refused
我有一个 rails 应用程序,它使用 sunspot/solr 进行搜索。这个应用程序在开发中运行良好,但现在我正在尝试将它部署到我遇到问题的服务器。
我在 Ubuntu 14.04 一键图像上使用带有 Dokku 0.5.4 的 Digital Ocean droplet。
我第一次尝试启动 Solr 并 运行ning 我按照 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?
生产配置中可能缺少用户名和密码?
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"] %>
很可能,您的 Solr 未设置为侦听本地主机接口而仅侦听 mydomain.com 接口。
要验证此假设,请从您的实例中执行 curl localhost:8983/solr/solr_sunspot_example
和 curl mydomain.com:8983/solr/solr_sunspot_example
。如果第二个命令成功,而第一个命令没有成功,情况就是如此。
您将有 2 个选项来解决它:要么指向您的配置以查询 mydomain.com 接口,要么更改 Solr 配置以侦听本地主机接口。后者将由 sunspot.yml 中的主机名设置控制(请参阅上面引用的 github wiki 页面)。
我有一个 rails 应用程序,它使用 sunspot/solr 进行搜索。这个应用程序在开发中运行良好,但现在我正在尝试将它部署到我遇到问题的服务器。
我在 Ubuntu 14.04 一键图像上使用带有 Dokku 0.5.4 的 Digital Ocean droplet。
我第一次尝试启动 Solr 并 运行ning 我按照 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?
生产配置中可能缺少用户名和密码?
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"] %>
很可能,您的 Solr 未设置为侦听本地主机接口而仅侦听 mydomain.com 接口。
要验证此假设,请从您的实例中执行 curl localhost:8983/solr/solr_sunspot_example
和 curl mydomain.com:8983/solr/solr_sunspot_example
。如果第二个命令成功,而第一个命令没有成功,情况就是如此。
您将有 2 个选项来解决它:要么指向您的配置以查询 mydomain.com 接口,要么更改 Solr 配置以侦听本地主机接口。后者将由 sunspot.yml 中的主机名设置控制(请参阅上面引用的 github wiki 页面)。