2

我正在使用 CentOS 5.3、Apache 和 Phusion Passenger ( mod_rails) 设置生产服务器。我有一个使用 Sphinx 搜索引擎和 Thinking Sphinx gem 的应用程序。

根据Thinking Sphinx 文档...

如果你真的想搜索索引数据,那么你需要运行 Sphinx 的 searchd 守护进程。这可以使用以下任务进行控制:

rake thinking_sphinx:start
rake ts:start
rake thinking_sphinx:stop
rake ts:stop

确保这在生产中发生的最佳方法是什么?我可以部署我的应用程序,然后手动运行rake thinking_sphinx:start,但我喜欢设置一些东西,这样如果我不得不重启服务器,一切都会恢复。

我应该在初始化程序中调用该 Rake 任务吗?还是里面的东西rc.local

4

3 回答 3

4

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

Sphinx 需要一个完整的重新索引来提供所有最新和最好的。思考狮身人面像网站上有一些关于delta indexing的文档,但如果您的索引很小,每小时重新索引会处理好事情,您不需要 delta indexing 的东西。

我每小时运行一次来​​处理这个问题:

0 * * * * cd /var/rails/my_site/current/ && RAILS_ENV=production /usr/bin/rake ts:rebuild

注意:对于部署,我将使用内置的 Thinking sphinx capistrano 任务:

在你的 Capfile 添加

require 'thinking_sphinx/deploy/capistrano'

我曾经在 cap 任务中链接重新索引但停止了,因为它真的很慢,当我进行架构更改时,我会记得运行它或等待每小时的 cron 作业来修复它。

于 2009-11-22T04:28:27.477 回答
1

我以前没有用 Spinix 做过这个,所以我希望有人能给你一个更好的答案,但你应该看看monit。Monit 旨在保持守护程序运行,就像您需要做的一样。

快速谷歌搜索 spinix monit 出现了这个链接:Capistrano recipes: sphinx:monit。那将是一个很好的起点。

于 2009-11-22T04:29:15.493 回答
0

为了它的价值,我正在跑步

thinking_sphinx:index

...在我的 cron 工作中,而不是“重建”任务。这不需要 searchd 进程处于离线状态,但索引在完成后仍会旋转,因此会获取新的更改。我认为只有在您实际更改模型中的索引结构时才需要“重建”任务,这对我来说很少发生。

于 2010-04-24T13:18:58.343 回答