View
9.242
Download
1
Category
Preview:
DESCRIPTION
第7回Ruby東海勉強会の発表資料
Citation preview
TOYOSYSTEM
Capistranoでデプロイの自動化
TOYOSYSTEM
Capistranoとは●Ruby on Railsの本番環境への設置などが自動化できるツール●実体は”複数のサーバに同じコマンドを送信できる”ツール
TOYOSYSTEM
アジャイルプラクティス
「製品のインストールなんて手動で良いって。しかもそれってQA向けなんだろ。頻繁にやる作業でもなんだし、ファイルを全部コピーするなんて、いかにもQAが得意そうな分野じゃないか。
第4章 15節 早いうちにデプロイを自動化する
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: ') endset :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: ') endset :scm_password do Capistrano::CLI.password_prompt('SVN Password: ') endset :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
デプロイ方法$ cap deploy:setup(1)デプロイ先にディレクトリを作成(初回のみ)
$ cap deploy(2)デプロイを実行
$ cap deploy:migrate(3)DBのmigrationを実行
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
まとめ●アプリケーションのデプロイを自動化しよう●自動化することでミスをなくす●だれでもいつでもデプロイできるようになる●自信をもってデプロイができるようになる●細かいアップデートができるようになる
Recommended