Capistranoで自動デプロイ

9,762 views
9,677 views

Published on

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

Published in: Technology
0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,762
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
31
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

Capistranoで自動デプロイ

  1. 1. TOYOSYSTEM Capistranoでデプロイの自動化
  2. 2. TOYOSYSTEM Capistranoとは ●Ruby on Railsの本番環境への設置などが自動化できるツール ●実体は”複数のサーバに同じコマンドを送信できる”ツール
  3. 3. TOYOSYSTEM アジャイルプラクティス 第4章 15節 早いうちにデプロイを自動化する 「製品のインストールなんて手動で良いって。しかもそれってQA向け なんだろ。頻繁にやる作業でもなんだし、ファイルを全部コピーするな んて、いかにもQAが得意そうな分野じゃないか。 P64 悪魔の囁き 最初からアプリケーションのデプロイを自動化しましょう 自動化されたデプロイの仕組みを用意して、さまざまな構成のマシンへ アプリケーションをインストールし、アプリケーションの依存関係をテ ストしなさい。QAはアプリケーションだけでなくデプロイもテスト対 称にするのです。 P65 天使の囁き
  4. 4. TOYOSYSTEM 手動のRailsデプロイ ●現在のデータのバックアップ ●設定ファイルなどの退避 ●ファイルのコピー ●ファイルやディレクトリの属性変更 ●サーバの再起動 (しかもこれはサーバが一台の場合) デメリット ●間違えることがある ●1ヶ月経つと忘れる ●前のバージョンに戻すのが大変 ●面倒くさい、不安
  5. 5. TOYOSYSTEM Capistranoを使ったデプロイ ●コマンドを一つ叩くだけ ●前のバージョンに戻すのもコマンドを1つ叩くだけ デメリット ●初期設定が必要(Railsなら簡単)
  6. 6. TOYOSYSTEM 導入する条件 ●ソースコードがSubversionなどでバージョン管理システムで管理され ている ●デプロイ先にSSHでログインができる ●デプロイ先でバージョン管理システムのクライアントソフトが使える ●Capistranoはコマンドを実行するだけのものなので、Capistrano自体 はCapistranoを起動するマシンにだけインストールされていればよい
  7. 7. TOYOSYSTEM 導入方法 $gem install capistrano Railsアプリケーション用の設定ファイルを生成 $ capify . # <= アプリケーションのルートディレクトリ すると./Capfileと./config/deploy.rbというファイルができるので congig/deploy.rbを編集して ・アプリケーション名 ・リポジトリアドレス ・アプリケーションのデプロイ先 などを指定する
  8. 8. 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
  9. 9. TOYOSYSTEM デプロイ方法 (1)デプロイ先にディレクトリを作成(初回のみ) $ cap deploy:setup (2)デプロイを実行 $ cap deploy (3)DBのmigrationを実行 $ cap deploy:migrate
  10. 10. TOYOSYSTEM そのほかのcapコマンド 以前の状態に戻す $ cap deploy:rollback 以前の状態のソースコードを削除 $ cap deploy:cleanup
  11. 11. 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にしておく)
  12. 12. TOYOSYSTEM まとめ ●アプリケーションのデプロイを自動化しよう ●自動化することでミスをなくす ●だれでもいつでもデプロイできるようになる ●自信をもってデプロイができるようになる ●細かいアップデートができるようになる

×