supervisord (1)
前から勉強する予定に入ってた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的な感じで使ってみるのはこんなかんじでええかなと