40歳からのキャリアチェンジ

20代はエンジニア・PM、30代はWeb系エンジニア向けのキャリアアドバイザー。40代の今はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連あたり

デプロイツールにCapistranoを使うことにしました。

WEB+DB PRESS Vol.51でデプロイ/ファイル転送の特集記事があったのでそれを読んでいて以前から言葉だけは知っていたCapistranoを使って、

  1. Mac上で開発
  2. Capistrano利用してテスト環境であるVirtualBox上でDebianにデプロイして動作確認
  3. 動作確認して問題なかったら、本番環境であるさくらVPSの方にCapistranoでデプロイ

みたいなワークフロー整備しようと決めました。

対象となるサーバ

以下2つで、それぞれ公開鍵認証出来るように設定済

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 50022

Host sakura-debian
User userid
HostName xxx.xxx.xxx.xxx
Port 22

とすれば

# VirtualBox上のDebian
ssh local-debian
#  さくらVPSのDebian
ssh sakura-debian

ssh出来るんですね。たぶん、仕事でLinux管理してる人には当たり前のことなのかもしれないけど今さら知った・・・

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の結果がコンソールに表示されました。