Ruby on rails 如何确保Sphinx守护进程运行?

Ruby on rails 如何确保Sphinx守护进程运行?,ruby-on-rails,ruby,sphinx,thinking-sphinx,Ruby On Rails,Ruby,Sphinx,Thinking Sphinx,我正在使用CentOS 5.3、Apache和Phusion Passenger(mod_rails)建立一个生产服务器。我有一个应用程序,使用斯芬克斯搜索引擎和思考斯芬克斯宝石 据 如果你真的想搜索 索引数据,然后您将需要 Sphinx的searchd守护进程正在运行。 这可以使用 以下任务: rake thinking_sphinx:start rake ts:start rake thinking_sphinx:stop rake ts:stop 确保在生产中实现这一点的最佳方法是什么?

我正在使用CentOS 5.3、Apache和Phusion Passenger(
mod_rails
)建立一个生产服务器。我有一个应用程序,使用斯芬克斯搜索引擎和思考斯芬克斯宝石

如果你真的想搜索 索引数据,然后您将需要 Sphinx的searchd守护进程正在运行。 这可以使用 以下任务:

rake thinking_sphinx:start
rake ts:start
rake thinking_sphinx:stop
rake ts:stop
确保在生产中实现这一点的最佳方法是什么?我可以部署我的应用程序,然后手动运行
rake thinking\u sphinx:start
,但我喜欢设置一些东西,以便在必须跳转服务器时,一切都会恢复


我应该在初始化器中调用Rake任务吗?或者是
rc.local

rc.local是一个好的开始,但还不够。我会将它与monit规则配对,以确保它正在运行,更重要的是

斯芬克斯需要一个完整的重新索引,使所有最新和最伟大的可用。在thinking sphinx网站上有一些doco,但是如果你的索引很小,每小时重新编制一次索引就可以了,你不需要delta索引

我每小时运行一次以解决以下问题:

0 * * * * cd /var/rails/my_site/current/ && RAILS_ENV=production /usr/bin/rake ts:rebuild
注意:对于部署,我将使用内置的思考sphinx capistrano任务:

在您的Capfile中添加

require 'thinking_sphinx/deploy/capistrano'

我曾经在cap任务中链接重新索引,但由于速度太慢而停止了,当我更改模式时,我会记得运行它或等待每小时一次的cron作业来修复它

我以前在Spinix上没有这样做过,所以我希望有人能给你一个更好的答案,但你应该看看。Monit是为保持守护进程运行而设计的,就像您需要做的那样


Google快速搜索spinix monit时发现了以下链接:。那将是一个很好的起点。

无论如何,我正在跑步

thinking_sphinx:index

。。。在我的cron作业中,而不是“重建”任务。这并不要求searchd进程离线,但索引在完成后仍会旋转,因此会拾取新的更改。我认为“重建”任务只有在您实际更改模型中的索引结构时才有必要,这种情况在我身上很少发生。

如果用户在重新索引运行时进行搜索,他们不会出错吗?yerp,这会使搜索在重建时失效,我建议您添加一些重试逻辑来补偿(最多重试20秒,或者显示一个显示搜索即将可用的自定义页面)。(pat将此添加到ts可能是个好主意)如果必须重新启动服务器,您还需要一种启动守护程序的方法。