cap deploy時にウェブサーバを再起動
意外と一筋縄ではいきませんでした。。
まずはパッケージのインストール。
$ sudo gem install capistrano-passenger
モジュール(gem)のロード部分をコメントアウトします。
Capfile
require 'capistrano/passenger'
この後色々とハマるポイントがあるんですが、以下のコマンドを使うと再起動の部分だけ実行してみることができますので、これでエラーを見ながら設定を調整していくことになります。
$ cap production deploy:restart
サーバのロールに「app」が入っていないと、そもそも何もしません。
config/deploy/xxx.rb
server 'hostname', user: 'username', roles: %w{app web}
ホスト側で権限の昇格(sudo)が必要な場合、以下を追加します。passengerを/usr/local下にインストールしている場合は、コマンドを絶対パスで書き直す必要があります。「sudo -i」を試したのですが、すべてのコマンドの間に「/usr/bin/env」が挟まっているためうまくいきませんでした。
config/deploy.rb
set :passenger_restart_with_sudo, true
set :passenger_restart_command, '/usr/local/bin/passenger-config restart-app'
ここがちょっと気持ち悪いんですが、少なくともenvコマンドについてsudoのrequirettyを外してやる必要があります。なにかもうちょっと限定的でスマートな解除方法ないでしょうか。。
/etc/sudoers.d/foo
Defaults!/usr/bin/env !requiretty
username ALL=(root) NOPASSWD:ALL
参考URL
- タグ別一覧: [rails] [capistrano] [passenger]
- チップス一覧
この記事は役に立ちましたか?
- EnglishWorm.com
- SinglesFan.com
- LmLab.net
- サイトマップ
- 運営者について