2012-01-02 38 views
5

私は最初のルビーアプリを作っています。あらゆるものを「生産」に移すことを知っている人は、とても込み合っている。これまでのところ、私は乗客を設定し、起動時に起動し、起動時に実行するように赤信号を取得するという方法で苦労しました。起動時に自動的にresqueワーカーを作成するにはどうすればよいですか?

私の最後の仕事はスタートアップ時に1人の労働者を追加することです。今すぐ、私はsshでレークコマンドrake workers:startを実行しなければなりません。明らかに、これはsshをクローズしたいときにはうれしくありません。だから、次のステップがどうやっているのか、本当に分かりません。

デフォルト設定をconfig.ruにコピーしようとしましたが、エラーが発生したときに乗客を爆破しました。私もいくつかの人が言いましたが、それは私の頭の上にあるresqueプールを調べました。

私がしなければならないことは、起動時に1人のワーカーを追加することだけです。これはアプリの真面目なことではないので、この時点で一番簡単なアプリではありません。

+0

ところで、あなたはRailsを使いますか?または他のフレームワークですか? Sinatra。 –

+0

。申し訳ありませんが、私はあなたが感じることを理解していると述べている必要があります – Tallboy

+0

。私もあまりにも圧倒されました:-) –

答えて

4

プロダクションでは、プロセスを見るにはgodを使用する必要があります。このプロジェクトが小さなものであっても、あなたの時間を投資して設定することを強くお勧めします。

もう1つ大きいa mustCapistranoです。

神を使用していた場合は、config fileが役に立ちます。

/etc/init.d/または/etc/init/または別のもの(使用しているシステムによって異なる)で適切なスクリプトを使用して、システム起動時にrake resque:workをスケジュール設定することもできます。私はこれまでにこれを試してみました。私は諦めました(理由を覚えていない)。

私の答えはあなたが今探しているものではないことを理解しています。しかし、これを想像してください。すべてがセットアップされていれば、次のバージョンのデプロイは開発マシンでrake deployを実行するのと同じくらい簡単です。また、リポジトリからコードを引き出したり、移行を実行したり、ワーカーやウェブサーバーを再起動したりすることはありません。

+1

私はこれがあなたが期待していた答えではないことを知っていますが、私はこれを「適切な」スタートアップスクリプトでどうやってやりますか?私は病気が神とカピストラーノにもっと見えると約束しますが、私はそれを最初に働かせたいだけです。私はcentOSを使用しています。 – Tallboy

+0

うーん、私は自分のサーバでubuntuを使っています。 centosについて知りません、申し訳ありません。 –

+0

神が礼拝する人であり、何かを使う人ではないと信じる人にとって、これは容認できない解決策です。より良い選択肢はmonitだろう。 – sockmonk

6

私は神の宝石を使用していません。(1)導入したセットアップの複雑さに非常に苦しんでいたプロジェクトを見てきました。(2)私は個人的に標準のLinux(Ubuntu )この種のものを扱うツール。起動時

にResqueの労働者を起動するには

私は私の/etc/rc.localファイルにこのコードを持っています。その後

# Start Resque 
su -l deploy -c "/home/deploy/start-resque-workers" 
su -l deploy -c "/home/deploy/start-resque-webui" 

、私はルビー環境をセットアップし、rakeタスクを実行これらのスクリプトに:私は、システム上の展開ユーザーを持って

# Load RVM into a shell session *as a function* 
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then 
    # First try to load from a user install 
    source "$HOME/.rvm/scripts/rvm" 
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then 
    # Then try to load from a root install 
    source "/usr/local/rvm/scripts/rvm" 
else 
    printf "ERROR: An RVM installation was not found.\n" 
fi 

# Use rvm to switch to the default ruby. 
rvm use default 

# Now launch the app 
cd /home/deploy/app-name-here/current 
nohup rake QUEUE=* RAILS_ENV=production environment resque:work & 

を、私はこの種のを使用してきました何年にもわたってセットアップされ、それはしっかりしています。サーバーはクラッシュしません。私は、これらの他のサーバーを監視するために別のシステム(神の宝石のようなもの)をインストールするオーバーヘッドはまだ必要ありません。

さらに、私はcapistrano gemを使用して、展開時にワーカーを再起動するのを処理します。

+0

ちょっと、4年前にあなたがこれに答えてくれたのを見ましたが... ...職場の労働者を救う方法があるのでしょうか?ps axを使ってpidを殺すとプロセスは殺されますが、 – jdkealy

+0

うーん...すみません、私はしません。ここに私のresqueスクリプトは、何か助けがあります:https://github.com/asm-products/think-200/tree/master/script – Dogweather

+0

戻ってきてくれてありがとう!私はちょうど昨日これを実装しました:https://gist.github.com/jdkealy/a7f817bbb8e568ff38bb resque労働者が仕事に忙しかったり、rakeタスクを実行するbashスクリプトにシンボリックリンクを追加したりしている間、サーバを殺すことに心配しました。 /etc/rc0.d/は正常に作業をやめたようです! – jdkealy

関連する問題