WEB+DB PRESS Vol.51でデプロイ/ファイル転送の特集記事があったのでそれを読んでいて以前から言葉だけは知っていたCapistranoを使って、
- Mac上で開発
- Capistrano利用してテスト環境であるVirtualBox上でDebianにデプロイして動作確認
- 動作確認して問題なかったら、本番環境であるさくらVPSの方にCapistranoでデプロイ
みたいなワークフロー整備しようと決めました。
Capistrano利用する以前にsshの設定見直し
毎回
# VirtualBox上のDebian ssh -p 50022 localhost # さくらVPSのDebian ssh xxx.xxx.xxx.xxx
みたいな感じでコマンド入力していたのですが、VirtualBoxの方はポートフォワードしているから毎回ポート指定しないといけず、結構忘れてしまうことがあるので、面倒だなぁーと思っていたらウノウラボの快適なsshクライアント生活 というページで参考になることが書かれていたので、~/.ssh/configというファイルに
Host local-debian
User userid
HostName localhost
Port 50022Host sakura-debian
User userid
HostName xxx.xxx.xxx.xxx
Port 22
とすれば
# VirtualBox上のDebian ssh local-debian # さくらVPSのDebian ssh sakura-debian
Capistranoはじめの一歩
Capistrano は思ったよりシンプルで思ったよりすごいというページをほぼそのままコピペする形で以下のようなCapfile作成しました
set :user, "userid" role :test, "localhost" desc "reporting disk usage with 'df -h'" task :check_disk, :roles => [:test] do run 'df -h' end
実行すると
$ cap check_disk * executing `check_disk' * executing "df -h" servers: ["localhost"] connection failed for: localhost (Errno::ECONNREFUSED: Connection refused - connect(2))
となって怒られてしまいました。
上記Capfileだと、デフォルトの22ポートにssh試みているわけで、そうなると、手元のMacに対するものになるので、Connection refusedになるのは当然の結果ですね・・
調べてみたらssh_optionsでport指定出来るようなので
set :user, "userid" set :ssh_options, :port => "50022" role :test, "localhost" desc "reporting disk usage with 'df -h'" task :check_disk, :roles => [:test] do run 'df -h' end
としたら
cap check_disk * executing `check_disk' * executing "df -h" servers: ["localhost"] [localhost] executing command ** [out :: localhost] Filesystem Size Used Avail Use% Mounted on 〜省略〜 ** [out :: localhost] 1.4G 210M 1.1G 17% /var command finished in 283ms
という感じでdf-hの結果がコンソールに表示されました。