TOYOSYSTEM




Capistranoでデプロイの自動化
TOYOSYSTEM


Capistranoとは
 ●Ruby on Railsの本番環境への設置などが自動化できるツール
 ●実体は”複数のサーバに同じコマンドを送信できる”ツール
TOYOSYSTEM


      アジャイルプラクティス
       第4章 15節 早いうちにデプロイを自動化する


「製品のインストールなんて手動で良いって。しかもそれってQA向け
なんだろ。頻繁にやる作業でもなんだし、ファイルを全部コピーするな
んて、いかにもQAが得意そうな分野じゃないか。
                             P64 悪魔の囁き

最初からアプリケーションのデプロイを自動化しましょう
自動化されたデプロイの仕組みを用意して、さまざまな構成のマシンへ
アプリケーションをインストールし、アプリケーションの依存関係をテ
ストしなさい。QAはアプリケーションだけでなくデプロイもテスト対
称にするのです。
                             P65 天使の囁き
TOYOSYSTEM


手動のRailsデプロイ
●現在のデータのバックアップ
●設定ファイルなどの退避


●ファイルのコピー


●ファイルやディレクトリの属性変更


●サーバの再起動


(しかもこれはサーバが一台の場合)

デメリット
●間違えることがある


●1ヶ月経つと忘れる


●前のバージョンに戻すのが大変


●面倒くさい、不安
TOYOSYSTEM


Capistranoを使ったデプロイ
●コマンドを一つ叩くだけ
●前のバージョンに戻すのもコマンドを1つ叩くだけ




デメリット
●初期設定が必要(Railsなら簡単)
TOYOSYSTEM


導入する条件
●ソースコードがSubversionなどでバージョン管理システムで管理され
ている
●デプロイ先にSSHでログインができる


●デプロイ先でバージョン管理システムのクライアントソフトが使える


●Capistranoはコマンドを実行するだけのものなので、Capistrano自体


はCapistranoを起動するマシンにだけインストールされていればよい
TOYOSYSTEM


導入方法
$gem install capistrano

Railsアプリケーション用の設定ファイルを生成
$ capify .   # <= アプリケーションのルートディレクトリ

すると./Capfileと./config/deploy.rbというファイルができるので
congig/deploy.rbを編集して
・アプリケーション名
・リポジトリアドレス
・アプリケーションのデプロイ先
などを指定する
TOYOSYSTEM


deploy.rbの例
set :application, 'joglog'
set :deploy_to, "/home/#{application}"

set :runner, 'joglog'
set :use_sudo, false

set :user do Capistrano::CLI.ui.ask('SSH User: ') end
set :password do Capistrano::CLI.password_prompt('SSH Password: ') end

#ssh_options[:verbose] = :debug

role :app, '192.168.24.111'
role :web, '192.168.24.111'
role :db, '192.168.24.111', :primary => true

set :scm_user do Capistrano::CLI.ui.ask('SVN User: ') end
set :scm_password do Capistrano::CLI.password_prompt('SVN Password: ') end
set :repository_uri, 'http://192.168.24.109/svn/joglog/trunk'

set :repository do "--username #{scm_user} --password #{scm_password}
 --no-auth-cache #{repository_uri}" end
TOYOSYSTEM


デプロイ方法
(1)デプロイ先にディレクトリを作成(初回のみ)
$ cap deploy:setup

(2)デプロイを実行
$ cap deploy

(3)DBのmigrationを実行
$ cap deploy:migrate
TOYOSYSTEM


そのほかのcapコマンド
以前の状態に戻す
$ cap deploy:rollback

以前の状態のソースコードを削除
$ cap deploy:cleanup
TOYOSYSTEM


cap setupで作られるディレクトリ構成
 [deploy_to]
 [deploy_to]/releases
 [deploy_to]/releases/20080819001122
 [deploy_to]/releases/...
 [deploy_to]/shared
 [deploy_to]/shared/log
 [deploy_to]/shared/pids
 [deploy_to]/shared/system
 [deploy_to]/current -> [deploy_to]/releases/20080819001122
                    http://www.capify.org/index.php/From_The_Beginning


releasesにソースを入れていき、currentからのシンボリックリンクを付
け替えることでロールバックを実現している。
(サーバのドキュメントルートは/current/publicにしておく)
TOYOSYSTEM


まとめ
●アプリケーションのデプロイを自動化しよう
●自動化することでミスをなくす


●だれでもいつでもデプロイできるようになる


●自信をもってデプロイができるようになる


●細かいアップデートができるようになる

Capistranoで自動デプロイ