supervisord (1)

2013-10-28T00:00:00+00:00 Ruby supervisord

前から勉強する予定に入ってたsupervisordを使ってみる事に。とりあえずGetting Started的に使うのが今回なセクションとして今後はドキュメント読みつつ色々やってみる的な感じで

要件

普通にRubyOnRailsで作ったプロジェクトとRedmineなパッケージをunicorn(_rails)で起動。それをsupervisordを行う

っていう事だけ。上記を/var/wwwに格納

.
├── redmine
└── sample

な感じ

インストール

sudo pip install supervisor

でインストール出来る。あとはsupervisord.conf的な設定ファイルを書けば良い。ちなみに

echo_supervisord_conf

をやればデフォルトのテンプレート的な設定を出力出来る模様

RailsプロジェクトをUnicornで動かす設定

unicorn的なインストールは普通に上記要件なプロジェクト中にあるGemfileに

source "https://rubygems.org"

# 追加
gem "unicorn"

をしておく。で更に別にどこでも良い(supervisord.confで指定する)ので、unicornな設定を行うRubyスクリプトを書く

APP_PATH = "/var/www/sample"

listen 8080

working_directory APP_PATH
pid APP_PATH + "/tmp/pids/unicorn.pid"
preload_app true

でunicornが開放するデフォルトのポートが8080番になるので、2つのプロジェクトで別々なポートを指定しておく。あとAPP_PATHな所も要所で修正

とりあえず動かすだけならこれだけで良いっぽい。プラスアルファな設定辺りは後術する参考を

unicorn_rails -c config/unicorn.rb -E production

辺りで起動してみて無難にアクセス出来るかを確認しておく (一応念の為)

supervisord.conf

[inet_http_server]
port=127.0.0.1:9001

[supervisord]
logfile=/var/log/supervisord/supervisord.log
;loglevel=debug

[supervisorctl]
serverurl=http://127.0.0.1:9001

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[program:unicorn-rails]
environment=BUNDLE_GEMFILE=/var/www/sample/Gemfile
command=/home/kinjouj/.rbenv/shims/bundle exec unicorn_rails -E production -c /var/www/sample/config/unicorn.rb

[program:redmine]
environment=BUNDLE_GEMFILE=/var/www/redmine/Gemfile
command=/home/kinjouj/.rbenv/shims/bundle exec unicorn_rails -E production -c /var/www/redmine/config/unicorn.rb

な感じで。あとはこのsupervisord.confがあるディレクトリで

supervisord -n

な感じで起動(-nはnodaemonオプション)

でsupervisordな管理ポートである9001にアクセスすると

な感じで起動されている模様

とりまぁGetting Started的な感じで使ってみるのはこんなかんじでええかなと

参考: https://gist.github.com/mikhailov/3052776

supervisord (2) - signal handlers - angular.jsをやってみる (3) - directive -