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

  • 3,383 views
Uploaded on

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

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,383
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
17
Comments
0
Likes
10

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 恋に落ちるデプロイツール「Capistrano」 2012-12-15
  • 2. 自己紹介• 徳永 貴久(とくなが たかひさ) • Groovenauts 勤め、RBC 所属• twitter • @totty_jp• Facebook • /takahisa.tokunaga.jp
  • 3. アジェンダ• デプロイ? かぴすとらーの?• 超簡単!Capデプロイ• 超基礎!Capデプロイ• 実運用!Capデプロイ• えっと!Capデプロイ• 恋に落ちる Capistrano
  • 4. デプロイ?かぴすとらーの?
  • 5. デプロイって何?• デプロイとは、主にWebアプリケーション などのシステム開発工程において、システム を利用可能な状態にすること• デプロイはソフトウェアのリリースやインス トールも含んだ意味の広い言葉• Webアプリケーションを デプロイする 際、 通常はサーバーを再起動して内容を反映させる 必要がある(サーバーが再起動いらずなら、 ホットデプロイと呼んだりする)
  • 6. Capistranoとは• 複数のサーバ環境で、並行にスクリプトを 実行してくれる便利なツール• サーバ上では優先的にBashコマンドライン として実行される(これマメね)• つまり、デプロイ作業を自動化できる• WEBアプリケーションのデプロイが得意• Linux/OpenBSD/OS X♪• Rubyで実装されてる♪
  • 7. • ちなみに、wikipedia で Capistrano を 調べてみました
  • 8. 地名の Capistrano ミラノ• イタリア共和国 カラブリア州 ヴィボ・ヴァレン ローマ ツィア県のコムーネ (イタリアの自治体 の最小単位)の一つ ナポリ• 人口、1,140人 カピストラーノ
  • 9. • さて、Capistrano使うと何が嬉しい?
  • 10. • デプロイ作業を自動化できる => 効率化 • 複数のサーバーに並行でデプロイ! • リリース時間の削減! • リリースの世代管理! • ロールバックも出来る!
  • 11. • では、さっそく少しだけご対面 ❤
  • 12. ちょっとCapistrano• 必要なもの • SSH • Ruby • Terminal • 恋ゴコロ
  • 13. ちょっと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
  • 14. ちょっと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
  • 15. ちょっとCapistrano• あれ、今のって、単なる。。• そう!やったのは、• ssh localhost echo rbc mac$  ssh  localhost  “echo  LoveRBC”• と同じ
  • 16. ちょっと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$
  • 17. ちょっとCapistrano• だけど、こういう作業をまとめてタスクとして 実行してくれる• ついでに接続先のサーバも設定しておける• それが、Capistrano の良いトコロ!• 「サーバにログインして、たくさん作業する」 • これを Capistrano さんは自動化して やってくれる ❤
  • 18. 超簡単!Capデプロイ
  • 19. 準備(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 • で起動しますね?
  • 20. 準備(Capistrano)• いよいよ、Capistrano ❤ #  for  mac mac$  capify  . [add]  writing  ./Capfile [add]  writing  ./config/deploy.rb [done]  capified! mac$• さっきは、自分で作った「Capfile」と 設定用のファイルが生成された
  • 21. capコマンド• capistrano の実行コマンド • cap! • cap! • cap!
  • 22. Capfile• cap コマンドで読み込まれるファイル• capyfi で生成された Capfile は・・ • capistrano ビルトインのデプロイレシピ と 設定用ファイル を load する内容に! • (ビルトインのデプロイレシピの内容は  後ほど説明します)
  • 23. 設定(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
  • 24. 設定(Capfile)• ./Capfile #  Capfile load  deploy load  config/deploy require  "bundler/capistrano"
  • 25. デプロイ• デプロイの実行! #  for  mac mac$  cap  deploy:setup mac$  cap  deploy:cold• かんりょー!超簡単!
  • 26. デプロイ(イメージ)
  • 27. 超基礎!Capデプロイ
  • 28. Capistrano?• Capistrano • 旧 switchtower • because of a trademark conflict. • March 2006
  • 29. 作業範囲• Capistranoで出来るのは、SSHでの作業を タスクとして定義して実行すること • タスク化しなくてもできるけど。。• SSHでやれることは出来る• Shellスクリプト や Batchの代用に? • 複数サーバ(ローカルも含む)への 並列実行が可能なShellスクリプト
  • 30. Railsアプリのデプロイ• Capistranoには、Railsアプリをデプロイ する便利なタスクのレシピが準備されている• cap -T • 実行できるタスクが確認できる #  for  mac mac$  cap  -­‐vT • 何にもタスク作ってないよねー ❤
  • 31. デプロイの流れ• さっきのデプロイ実行 #  for  mac mac$  cap  deploy:setup mac$  cap  deploy:cold• SSHでデプロイ先にログイン• 最新ソースコードの取得&配置(git, svn, ..)• db:migrateを実行• Apacheの起動
  • 32. デプロイの流れ✤ 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 • アプリ共有
  • 33. デプロイの流れ✤ 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 •
  • 34. Capistranoタスク• Capistrano 標準で用意されてるタスク • deploy タスク -> setup, cold, start, ... • db タスク -> backup, export, restore, ... • utility タスク -> invoke, shell• https://github.com/capistrano/capistrano/ wiki/Capistrano-Tasks
  • 35. 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
  • 36. 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
  • 37. 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
  • 38. 実運用!Capデプロイ
  • 39. プラグイン• 出力される表示に色付け • gem install capistrano_colors• 複数環境に対応 • gem install capistrano-ext • # 共通の設定 • config/deploy.rb • # 環境毎の設定 • config/deploy/development.rb • config/deploy/production.rb
  • 40. 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 •
  • 41. その他のデプロイツール• Mina (http://nadarei.co/mina/) • もう少し成熟しないと使えないかも •
  • 42. 恋に落ちるCapistrano
  • 43. 恋に落ちる要素1. 第一印象 アイコンタクト、無意識の動作や表情、 オーラや雰囲気
  • 44. 恋に落ちる6つの要素2. 共通点 性格、趣味、なんでもイイ何か一つでもピンと くるもの
  • 45. 恋に落ちる6つの要素3. 具体的価値 自分に対して何をしてくれるか?
  • 46. 恋に落ちる6つの要素4. エゴ 自分自身が強みと感じているキャラクターや特 技、容貌などを見つけて褒め称えることができ るか相手があなたの存在価値をとても大切にし てくれているという事もエゴを満たす条件 「わたしにとって、あなたの存在が何よりも大 切」と相手のエゴに訴えるのは効果的
  • 47. 恋に落ちる6つの要素5. 男女の違いに対する理解 多くの人が、恋愛関係に落ちる時に「あ、この 人だけは、他の人とは違うかもしれない!」 相手の気持ちを理解してくれることが大事
  • 48. 恋に落ちる6つの要素6. (削除) 公開向けとしては不適切な表現があった為、 削除しました
  • 49. 考察恋に落ちるかどうかは、あなた次第!