У меня есть VPS с Ubuntu 10.04 и Nginx на нем и приложение Rails, которое развертывается на нем через capistrano. Пока все отлично работает. Вчера я попытался интегрировать Sunspot / Solr, который был полным провалом, потому что он разрушил весь мой сервер и приложение.
Итак, сегодня я попробовал Tire / ElasticSearch как комбинацию для полнотекстового поиска. В моей местной среде разработки все работает отлично. Я установил ES через доморощенный и получил его и работает. После небольшого тестирования я развернул приложение на своем VPS и установил ES на этом сервере.
Когда я запускаю ES, он дает мне PID и, кажется, работает нормально, но проблема в том, что кажется, что шина не может подключиться к нему или найти его. Потому что я не могу сохранить объект, который был бы проиндексирован, или искать что-то в базе данных. Я всегда получаю сообщение (я сам изменил IP-адрес на 0.0.0.0):
Started GET "/food?utf8=%E2%9C%93&query=hamburger" for 0.0.0.0 at 2011-12-22 16:43:07 +0100
Processing by PostsController#index as HTML
Parameters: {"utf8"=>"✓", "query"=>"hamburger"}
Completed 500 Internal Server Error in 11ms
Errno::ECONNREFUSED (Connection refused - connect(2)):
app/models/food.rb:23:in search'
app/controllers/food_controller.rb:12:inindex'
Сообщение почти одинаковое, если я пытаюсь что-то сохранить, отличается только строка кода, в которой происходит ошибка.
Я часами искал, чтобы выяснить, где ошибка, если я что-то упустил в конфигурации или в чем проблема, но я просто не могу ее найти.
Я думал, что проблема в том,
а) Шина не знает, как найти ES, даже если нет конфигурации для установки
б) IPTables или Nginx вызывают ошибку
А также я не могу открыть my-domain.com:9200 для доступа к ES, но, вероятно, это связано с Nginx. Единственное, что я не смог найти в Интернете никого, кто имел бы ту же проблему или поделился способом сделать это.
Буду очень признателен за вашу помощь.