Capistrano3 で Vagrant で構築したVMにデプロイするための必要最低限の手順をまとめる.そもそも Capistrano3 いろいろ変わり過ぎ!このエントリーは Capistrano2 ではなく Capistrano3 前提.
初期化処理
まずは任意の作業ディレクトリを作成してコマンドを叩く. capify じゃなくなったので注意!
cap install もしくは cap install STAGES=development,staging,production
初期化後はこんな構成になる(treeコマンドを使いたかっただけ).
$ tree . ├── Capfile ├── config │ ├── deploy │ │ ├── production.rb │ │ └── staging.rb │ └── deploy.rb └── lib └── capistrano └── tasks 5 directories, 4 files
config/deploy.rb を編集する
テンプレートから以下の3行を更新する. 上から アプリケーション名/デプロイするGitHubリポジトリURL/デプロイする VM 上のディレクトリパス で,事前に :deploy_to の1つ上の階層にパーミッションを与えておく必要がある(実際には Chef あたりで構築しておくと良さそう).
set :application, 'SampleApp' set :repo_url, 'git@github.com:xxx/xxx.git' set :deploy_to, '/var/www/SampleApp'
config/deploy/staging.rb を編集する
テンプレートから role 定義をコメントアウトする. そして sever 定義は以下のように変更する.
#role :app, %w{deploy@example.com} #role :web, %w{deploy@example.com} #role :db, %w{deploy@example.com} (中略) server 'xxx.xxx.xxx.xxx', user: 'vagrant', roles: %w{app}, ssh_options: { keys: %w(~/.vagrant.d/insecure_private_key), auth_methods: %w(publickey) }
デプロイを実行する
あとはデプロイするだけでOK!
cap staging deploy
処理が正常終了した後に vagrant ssh で接続して ls すると,ちゃんとデプロイされていることがわかる.
$ ls -al /var/www/SampleApp lrwxrwxrwx 1 vagrant vagrant 44 Dec 10 23:52 current -> /var/www/SampleApp/releases/20131210235200 drwxrwxr-x 4 vagrant vagrant 4096 Dec 10 23:52 releases drwxrwxr-x 7 vagrant vagrant 4096 Dec 10 23:47 repo drwxrwxr-x 2 vagrant vagrant 4096 Dec 10 23:47 shared
実運用で使うのであれば,まだまだカスタマイズしたり,Capistrano2から機能落ちしてしまった部分の回避策を考えたりする必要があるけど,とにかくまずは動くことを確認してから1歩ずつ進んだ方が良いときもあるので,まずはここから,という感じ.
Capistrano 3への手引き - 今日のごはんは素麺です
Capistrano 3 Tutorial Series Part 2 - Using Capistrano 3 for deploying PHP and other none Rails based websites | ZodiacMedia.co.uk
Capistrano で Vagrant の仮想マシンにアクセス - エンジニアきまぐれTips