2

CentOS 5.3、Apache、Phusion Passenger()を使用して本番サーバーのセットアップに取り組んでいますmod_rails。Sphinx検索エンジンとThinkingSphinxgemを使用するアプリがあります。

ThinkingSphinxのドキュメントによると...

インデックス付けされたデータを実際に検索する場合は、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 は良いスタートですが、十分ではありません。私はそれが実行されていることを確認するためにmonitルールとペアになり、さらに重要なことに...

Sphinx では、最新かつ最高のものをすべて利用できるようにするには、完全な再インデックスが必要です。thinking sphinx サイトには、デルタ インデックス作成に関する doco がありますが、インデックスが小さい場合は、1 時間ごとの再インデックス処理で問題が解決され、デルタ インデックス作成は必要ありません。

これを処理するために、これを毎時実行します。

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 タスクで再インデックス作成を連鎖させていましたが、非常に遅いため停止しました。スキーマを変更するときは、忘れずに実行するか、1 時間ごとの cron ジョブが修正されるのを待ちます。

于 2009-11-22T04:28:27.477 に答える
1

これまで Spinix でこれを行ったことがないので、誰かがより良い答えを提供してくれることを願っていますが、 monit を見てください。Monit は、必要なことと同じように、デーモンを実行し続けるように設計されています。

spinix monit の簡単な Google は、このリンクを見つけました: Capistrano レシピ: sphinx:monit。それは始めるのに良い場所です。

于 2009-11-22T04:29:15.493 に答える
0

それが価値あるもののために、私は走っています

thinking_sphinx:index

...「再構築」タスクの代わりに、私のcronジョブで。これには、searchd プロセスをオフラインにする必要はありませんが、完了時にインデックスがローテーションされるため、新しい変更が取得されます。「再構築」タスクは、モデルのインデックス構造を実際に変更する場合にのみ必要だと思いますが、これは私にとってはめったに起こりません。

于 2010-04-24T13:18:58.343 に答える