
私は Redis やその他のソフトウェアを稼働させ続けるために走っていますsupervisord
。しかし、どうしてもresque-web
仕事に取り掛かることができません。
私が含める .ini は次のとおりです:
[プログラム:resque] コマンド=/usr/local/rvm/gems/ruby-2.0.0-p195/bin/resque-web 自動起動=true 自動再起動=true ユーザー=root stdout_logファイル=/var/lib/resque/stdout.log stderr_logファイル=/var/lib/resque/stderr.log
残念ながら、実行するとログservice supervisor restart
に次の内容が表示されますsupervisord
。
INFO 終了: resque (終了ステータス 127; 予想外)
Googleによるとコード 127「コマンドが見つかりません」。ただし、そのコマンドを手動で実行すると、resque-web サーバーは正常に起動し、次の出力が表示されます。
[2013-05-24 00:03:09 -0600] 'resque-web' を起動しています... [2013-05-24 00:03:09 -0600] ポート 5678 を試行しています...
/var/lib/resque/stderr.log
supervisord が resque-web を起動しようとしたときに、次のメッセージが表示されることも注目に値します。
/usr/bin/env: ruby_noexec_wrapper: そのようなファイルまたはディレクトリはありません
困惑しています。 supervisord で設定した他のソフトウェアはすべて問題なく動作します。頭を悩ませているのはこれだけです...
編集1
そこで、これを回避するために簡単なbashスクリプトを作成しようとしましたが、今度はファイルに別のエラーが発生しますstderr.log
。私が含める.iniは次のように変更されています。command=/usr/local/bin/resque-web
/usr/local/bin/resque-web
#!/bin/bash ソース /usr/local/rvm/environments/default レスキューウェブ
エラー
usr/local/rvm/gems/ruby-2.0.0-p195/gems/vegas-0.1.11/lib/vegas/runner.rb:82: `app_dir': も --app-dir も EVN['HOME'] も定義されていません (ArgumentError) /usr/local/rvm/gems/ruby-2.0.0-p195/gems/vegas-0.1.11/lib/vegas/runner.rb:66:in `initialize' から /usr/local/rvm/gems/ruby-2.0.0-p195/gems/resque-1.24.1/bin/resque-web:13:in `new' から /usr/local/rvm/gems/ruby-2.0.0-p195/gems/resque-1.24.1/bin/resque-web:13:in から `' /usr/local/rvm/gems/ruby-2.0.0-p195/bin/resque-web:23:in `load' から /usr/local/rvm/gems/ruby-2.0.0-p195/bin/resque-web:23:in から `' /usr/local/rvm/gems/ruby-2.0.0-p195/bin/ruby_noexec_wrapper:14: から `eval' /usr/local/rvm/gems/ruby-2.0.0-p195/bin/ruby_noexec_wrapper:14:in から `'
答え1
どうやら、supervisor はデーモン化されたプロセスであるため、resque-web では動作しないようです。解決策は、/etc/cron.d/resque
次のものを作成して配置することでした。
シェル=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rvm/gems/ruby-2.0.0-p195/bin ホーム=/ * * * * * ルートresque-web
これは 1 分ごとに実行され、クラッシュした場合はサーバーを再起動します。私にとってはこれで十分です。