我正在使用CentOS 5.3,Apache和Phusion Passenger(mod_rails
)设置生产服务器。我有一个使用Sphinx搜索引擎和Thinking Sphinx gem的应用程序。
如果您确实想要搜索 索引数据,那么你需要 Sphinx的searchd守护进程正在运行。 这可以使用 以下任务:
rake thinking_sphinx:start rake ts:start rake thinking_sphinx:stop rake ts:stop
确保在生产中发生这种情况的最佳方法是什么?我可以部署我的应用程序,然后手动运行rake thinking_sphinx:start
,但我喜欢设置,这样如果我必须退回服务器,一切都会恢复。
我应该在初始化程序中调用该Rake任务吗?或rc.local
中的某些内容?
答案 0 :(得分:4)
rc.local是一个好的开始,但还不够。我会配合monit规则以确保它正在运行,更重要的是......
Sphinx需要一个完整的重新索引来制作所有最新和最好的。思考sphinx网站上有一些关于delta indexing的doco,但是如果你的索引很小,那么每小时重新索引会处理一些事情而你不需要增量索引。
我每小时运行一次来处理这个问题:
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作业来修复它。
答案 1 :(得分:1)
我之前没有使用Spinix,所以我希望有人可以给你一个更好的答案,但是你应该看一下monit。 Monit旨在让守护进程保持运行,就像你需要做的那样。
一个针对spinix monit的快速谷歌出现了这个链接:Capistrano recipes: sphinx:monit。那将是一个很好的起点。
答案 2 :(得分:0)
为了它的价值,我正在运行
thinking_sphinx:index
...在我的cron工作中,而不是“重建”任务。这不需要搜索进程离线,但索引在完成后仍会轮换,因此会选择新的更改。我认为只有在模型中实际更改索引结构时才需要“重建”任务,这对我来说很少发生。