2

私は、delayed_job プロセスを監視するために Bluepill をセットアップしました。

私の運用サーバーでは、ユーザーのホーム フォルダー (ユーザー名はdeploy) にインストールされた RVM を使用しています。私のアプリの gem は、独自のプロジェクト固有の gemset にインストールされています。そのため、bluepill gem とそれに対応するバイナリが~/.rvm/....フォルダー内にインストールされます。

capistrano を使用してアプリをデプロイするときに、bluepill を停止して開始し、DJ が再起動されるようにします。ここでカピストラーノのレシピの説明を見ています。

私の RVM 準拠の bluepill タスクは、次のようにする必要があると思います。

# Bluepill related tasks
after 'deploy:start', 'bluepill:start'
after 'deploy:stop', 'bluepill:quit'
after 'deploy:restart', 'bluepill:quit', 'bluepill:start'

namespace :bluepill do
  desc 'Stop processes that bluepill is monitoring and quit bluepill'
  task :quit, :roles => [:app] do
    run "cd #{current_path}; sudo bluepill #{application}_#{rails_env} stop"
    run "cd #{current_path}; sudo bluepill #{application}_#{rails_env} quit"
    sleep 5
  end

  desc 'Load bluepill configuration and start it'
  task :start, :roles => [:app] do
    run "cd #{current_path}; sudo bluepill load #{current_path}/config/server/#{rails_env}/delayed_job.bluepill"
  end

  desc 'Prints bluepills monitored processes statuses'
  task :status, :roles => [:app] do
    run "cd #{current_path}; sudo bluepill #{application}_#{rails_env} status"
  end
end

私はまだ上記をテストしていません。

私が疑問に思っているのは、ユーザーがこれらの bluepill 関連のコマンドだけをパスワードなしで root として実行sudoersできるようにするには、ファイルに何を入れればよいでしょうか? このページdeployで、彼らはこれについて言及しました:

deploy ALL=(ALL) NOPASSWD: /usr/local/bin/bluepill

しかし、私の場合、bluepill バイナリへのパスは異なります。また、プロジェクト固有の gemsets のため、プロジェクトごとに異なります。各バイナリパスについて言及する必要がありますか、それともこれを処理するより良い方法はありますか?

4

1 に答える 1