恋に落ちるデプロイツール
Upcoming SlideShare
Loading in...5
×
 

恋に落ちるデプロイツール

on

  • 3,798 views

Capistrano の簡単な説明からredmine のデプロイまでの資料です。 ...

Capistrano の簡単な説明からredmine のデプロイまでの資料です。

サンプルのソースコードは、こちらです。
https://github.com/totty/redmine_deployer

Statistics

Views

Total Views
3,798
Slideshare-icon Views on SlideShare
3,797
Embed Views
1

Actions

Likes
9
Downloads
14
Comments
0

1 Embed 1

http://s.deeeki.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    恋に落ちるデプロイツール 恋に落ちるデプロイツール Presentation Transcript

    • 恋に落ちるデプロイツール「Capistrano」 2012-12-15
    • 自己紹介• 徳永 貴久(とくなが たかひさ) • Groovenauts 勤め、RBC 所属• twitter • @totty_jp• Facebook • /takahisa.tokunaga.jp
    • アジェンダ• デプロイ? かぴすとらーの?• 超簡単!Capデプロイ• 超基礎!Capデプロイ• 実運用!Capデプロイ• えっと!Capデプロイ• 恋に落ちる Capistrano
    • デプロイ?かぴすとらーの?
    • デプロイって何?• デプロイとは、主にWebアプリケーション などのシステム開発工程において、システム を利用可能な状態にすること• デプロイはソフトウェアのリリースやインス トールも含んだ意味の広い言葉• Webアプリケーションを デプロイする 際、 通常はサーバーを再起動して内容を反映させる 必要がある(サーバーが再起動いらずなら、 ホットデプロイと呼んだりする)
    • Capistranoとは• 複数のサーバ環境で、並行にスクリプトを 実行してくれる便利なツール• サーバ上では優先的にBashコマンドライン として実行される(これマメね)• つまり、デプロイ作業を自動化できる• WEBアプリケーションのデプロイが得意• Linux/OpenBSD/OS X♪• Rubyで実装されてる♪
    • • ちなみに、wikipedia で Capistrano を 調べてみました
    • 地名の Capistrano ミラノ• イタリア共和国 カラブリア州 ヴィボ・ヴァレン ローマ ツィア県のコムーネ (イタリアの自治体 の最小単位)の一つ ナポリ• 人口、1,140人 カピストラーノ
    • • さて、Capistrano使うと何が嬉しい?
    • • デプロイ作業を自動化できる => 効率化 • 複数のサーバーに並行でデプロイ! • リリース時間の削減! • リリースの世代管理! • ロールバックも出来る!
    • • では、さっそく少しだけご対面 ❤
    • ちょっとCapistrano• 必要なもの • SSH • Ruby • Terminal • 恋ゴコロ
    • ちょっとCapistrano• まずは、capistrano インストール #  for  mac mac$  mkdir  ~/foo  &&  cd  ~/foo mac$  rvm  gemset  create  lovecap mac$  rvm  gemset  use  lovecap mac$  gem  install  capistrano  -­‐-­‐no-­‐ri  -­‐-­‐no-­‐rdoc
    • ちょっとCapistrano• Capfile #  for  mac mac$  touch  Capfile mac$ mac$  cap  HOSTS=localhost  COMMAND="echo  LoveRBC"  invoke    *  2012-­‐12-­‐14  20:31:54  executing  `invoke    *  executing  "echo  LoveRBC"        servers:  ["192.168.1.158"]        [192.168.1.158]  executing  command  **  [out  ::  192.168.1.158]  LoveRBC  **  はリモート上        command  finished  in  19ms mac$ での実行結果 #  for  mac mac$  cap  HOSTS=192.168.1.158  -­‐s  user="rbc"                    COMMAND=”echo  LoveRBC”  invoke
    • ちょっとCapistrano• あれ、今のって、単なる。。• そう!やったのは、• ssh localhost echo rbc mac$  ssh  localhost  “echo  LoveRBC”• と同じ
    • ちょっとCapistrano• タスク化 #  Capfile desc  "echo  message" task  :echo_msg  do    run  "echo  #{msg}" end #  for  mac mac$  cap  HOSTS=localhost  -­‐s  msg="LoveRBC"  echo_msg    *  2012-­‐12-­‐15  14:15:10  executing  `echo_msg    *  executing  "echo  LoveRBC"        servers:  ["localhost"]        [localhost]  executing  command  **  [out  ::  localhost]  LoveRBC        command  finished  in  182ms mac$
    • ちょっとCapistrano• だけど、こういう作業をまとめてタスクとして 実行してくれる• ついでに接続先のサーバも設定しておける• それが、Capistrano の良いトコロ!• 「サーバにログインして、たくさん作業する」 • これを Capistrano さんは自動化して やってくれる ❤
    • 超簡単!Capデプロイ
    • 準備(Rails)• まずは、rails アプリ #  for  mac mac$  rvm  gemset  use  lovecap mac$  gem  install  rails  -­‐v  3.2.1  -­‐-­‐no-­‐ri  -­‐-­‐no-­‐rdoc   mac$  rails  new  lovecap mac$  cd  lovecap mac$  rails  s• http://localhost:3000 • で起動しますね?
    • 準備(Capistrano)• いよいよ、Capistrano ❤ #  for  mac mac$  capify  . [add]  writing  ./Capfile [add]  writing  ./config/deploy.rb [done]  capified! mac$• さっきは、自分で作った「Capfile」と 設定用のファイルが生成された
    • capコマンド• capistrano の実行コマンド • cap! • cap! • cap!
    • Capfile• cap コマンドで読み込まれるファイル• capyfi で生成された Capfile は・・ • capistrano ビルトインのデプロイレシピ と 設定用ファイル を load する内容に! • (ビルトインのデプロイレシピの内容は  後ほど説明します)
    • 設定(deploy.rb)• config/deploy.rb #  config/deploy.rb set  :application,  "lovecap" set  :repository,    "." set  :scm,                  "none" set  :user,                "rbc" set  :password,        "password" set  :deploy_to,      "/var/#{application}" set  :deploy_via,    :copy set  :copy_compression,    :zip set  :bundle_dir,                "./vendor/bundle" default_run_options[:pty]  =  true role  :web,  "192.168.1.158" role  :app,  "192.168.1.158" role  :db,    "192.168.1.158",  :primary  =>  true
    • 設定(Capfile)• ./Capfile #  Capfile load  deploy load  config/deploy require  "bundler/capistrano"
    • デプロイ• デプロイの実行! #  for  mac mac$  cap  deploy:setup mac$  cap  deploy:cold• かんりょー!超簡単!
    • デプロイ(イメージ)
    • 超基礎!Capデプロイ
    • Capistrano?• Capistrano • 旧 switchtower • because of a trademark conflict. • March 2006
    • 作業範囲• Capistranoで出来るのは、SSHでの作業を タスクとして定義して実行すること • タスク化しなくてもできるけど。。• SSHでやれることは出来る• Shellスクリプト や Batchの代用に? • 複数サーバ(ローカルも含む)への 並列実行が可能なShellスクリプト
    • Railsアプリのデプロイ• Capistranoには、Railsアプリをデプロイ する便利なタスクのレシピが準備されている• cap -T • 実行できるタスクが確認できる #  for  mac mac$  cap  -­‐vT • 何にもタスク作ってないよねー ❤
    • デプロイの流れ• さっきのデプロイ実行 #  for  mac mac$  cap  deploy:setup mac$  cap  deploy:cold• SSHでデプロイ先にログイン• 最新ソースコードの取得&配置(git, svn, ..)• db:migrateを実行• Apacheの起動
    • デプロイの流れ✤ deploy:setup #  cap  deploy:setup #  で生成されるディレクトリ • 初回のみ実施 • デプロイに必要な /u/apps/xxx/ ディレクトリ生成 /u/apps/xxx/releases /u/apps/xxx/shared • 生成されたディレクトリの /u/apps/xxx/shared/system パーミッション変更 /u/apps/xxx/shared/log /u/apps/xxx/shared/pids • releases • デプロイ先 • shared • アプリ共有
    • デプロイの流れ✤ update_code #  cap  deploy:cold  でデプロイ • ソースコードの取得 ・deploy:cold ・deploy:update • release dir に展開✤ bundle install    ==  transaction:  start  ==    ・deploy:update_code • 必要なgemをインスコ    ・bundle  install  (opt)✤ finalize_update    ・deploy:finalize_update • sharedのシンボリック    ・deploy:create_symlink    ==  transaction:  finish  ==✤ create_symlink ・deploy:migrate • currentのシンボリック ・deploy:start •
    • Capistranoタスク• Capistrano 標準で用意されてるタスク • deploy タスク -> setup, cold, start, ... • db タスク -> backup, export, restore, ... • utility タスク -> invoke, shell• https://github.com/capistrano/capistrano/ wiki/Capistrano-Tasks
    • DSL - Action Module• DSLで利用できるアクションModule • 実行系 -> run, sudo, parallel • 確認系 -> capture, stream • 転送系 -> put, get, upload, download• https://github.com/capistrano/capistrano/ wiki/2.x-DSL-Documentation-Action- Module
    • DSL - Config Module• DSLで利用できる設定Module • 役割 -> role, server • 宣言 -> desc, namespace, task, before, ... • 変数 -> set(), fetch(), ... • 実行 -> transaction(), on_rollback(), ...• https://github.com/capistrano/capistrano/ wiki/2.x-DSL-Documentation- Configuration-Module
    • DSL - Config Variables• DSLで利用できる設定変数 • :application (必須) • :user (sshユーザ), :password (sshパスワード) • :scm (デフォ:Git), :scm_name, :scm_password • :repository (レポジトリURL)(必須) • :deploy_to (デプロイ先) • :deploy_via (デプロイ方式) (デフォ:checkout) • -> checkout, export (デプロイ先で), copy (デプロイ元で)• https://github.com/capistrano/capistrano/wiki/2.x- Significant-Configuration-Variables
    • 実運用!Capデプロイ
    • プラグイン• 出力される表示に色付け • gem install capistrano_colors• 複数環境に対応 • gem install capistrano-ext • # 共通の設定 • config/deploy.rb • # 環境毎の設定 • config/deploy/development.rb • config/deploy/production.rb
    • Redmineをデプロイ• config/deploy.rb #  for  mac mac$  mkdir  ~/redmine  &&  cd  ~/redmine mac$  rvm  gemset  use  lovecap mac$  cap  deploy:setup mac$  cap  deploy:cold • ( 実際のファイルを表示します) • https://github.com/totty/redmine_deployer/blob/master/config/ deploy.rb• 前提 • デプロイ先のサーバにパッケージ入ってる • subversion(git), apache, sqlite, ruby • gem: bundler, passenger •
    • その他のデプロイツール• Mina (http://nadarei.co/mina/) • もう少し成熟しないと使えないかも •
    • 恋に落ちるCapistrano
    • 恋に落ちる要素1. 第一印象 アイコンタクト、無意識の動作や表情、 オーラや雰囲気
    • 恋に落ちる6つの要素2. 共通点 性格、趣味、なんでもイイ何か一つでもピンと くるもの
    • 恋に落ちる6つの要素3. 具体的価値 自分に対して何をしてくれるか?
    • 恋に落ちる6つの要素4. エゴ 自分自身が強みと感じているキャラクターや特 技、容貌などを見つけて褒め称えることができ るか相手があなたの存在価値をとても大切にし てくれているという事もエゴを満たす条件 「わたしにとって、あなたの存在が何よりも大 切」と相手のエゴに訴えるのは効果的
    • 恋に落ちる6つの要素5. 男女の違いに対する理解 多くの人が、恋愛関係に落ちる時に「あ、この 人だけは、他の人とは違うかもしれない!」 相手の気持ちを理解してくれることが大事
    • 恋に落ちる6つの要素6. (削除) 公開向けとしては不適切な表現があった為、 削除しました
    • 考察恋に落ちるかどうかは、あなた次第!