12
TOYOSYSTEM Capistranoでデプロイの自動化

Capistranoで自動デプロイ

  • Upload
    toyoshi

  • View
    9.242

  • Download
    1

Embed Size (px)

DESCRIPTION

第7回Ruby東海勉強会の発表資料

Citation preview

Page 1: Capistranoで自動デプロイ

TOYOSYSTEM

Capistranoでデプロイの自動化

Page 2: Capistranoで自動デプロイ

TOYOSYSTEM

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

Page 3: Capistranoで自動デプロイ

TOYOSYSTEM

アジャイルプラクティス

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

第4章 15節 早いうちにデプロイを自動化する

P64 悪魔の囁き

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

P65 天使の囁き

Page 4: Capistranoで自動デプロイ

TOYOSYSTEM

手動のRailsデプロイ●現在のデータのバックアップ●設定ファイルなどの退避●ファイルのコピー●ファイルやディレクトリの属性変更●サーバの再起動(しかもこれはサーバが一台の場合)

デメリット●間違えることがある●1ヶ月経つと忘れる●前のバージョンに戻すのが大変●面倒くさい、不安

Page 5: Capistranoで自動デプロイ

TOYOSYSTEM

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

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

Page 6: Capistranoで自動デプロイ

TOYOSYSTEM

導入する条件●ソースコードがSubversionなどでバージョン管理システムで管理されている●デプロイ先にSSHでログインができる●デプロイ先でバージョン管理システムのクライアントソフトが使える●Capistranoはコマンドを実行するだけのものなので、Capistrano自体はCapistranoを起動するマシンにだけインストールされていればよい

Page 7: Capistranoで自動デプロイ

TOYOSYSTEM

導入方法$gem install capistrano

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

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

Page 8: Capistranoで自動デプロイ

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

Page 9: Capistranoで自動デプロイ

TOYOSYSTEM

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

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

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

Page 10: Capistranoで自動デプロイ

TOYOSYSTEM

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

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

Page 11: Capistranoで自動デプロイ

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にしておく)

Page 12: Capistranoで自動デプロイ

TOYOSYSTEM

まとめ●アプリケーションのデプロイを自動化しよう●自動化することでミスをなくす●だれでもいつでもデプロイできるようになる●自信をもってデプロイができるようになる●細かいアップデートができるようになる