私は内部ツールを統合したSlack Botを構築しています。Redis、Rubyスクリプト、Resqueワーカーをデーモンとして起動するには
私は、このソリューションを参照してください。Trying to start redis and resque scheduler within a rake task
をしかし、これを行うにはクリーンな方法は何ですか?
現在、私は基本的にこれでさらに別のRubyスクリプトstart.rb
のすべて始めています:
system('nohup redis-server &')
system('nohup bundle exec ruby slack_bot.rb &')
system("nohup bundle exec rake resque:workers QUEUE=* COUNT=#{$workers} &")
を一般的に、これは素晴らしいですが、いくつかの理由でslack_botは時々ハングアップします。再起動するには、その1つのプロセスを終了して再起動する必要があります。基本的にプロセスをデーモン化するだけで、すべてを一緒に再起動してクリーンにする簡単な方法が好きです。完璧な世界では、私はこれをすべてシステムサービスとして実行し、service bot start
または/etc/init.d
で開始/停止するか、開始/終了する1つのプロセスを持つことができます。
私が必要としていたことは、「foreman start」で完璧に動作し、画面で実行して永続化させることができます。私がシステムサービスの部分をやろうとすると、Redisは起動せず、他の部分も起動します。私はRedisの行に「 - 」の問題があるかもしれないと読んでいます。 –