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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

3,952

Published on

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

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

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

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

No Downloads
Views
Total Views
3,952
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
19
Comments
0
Likes
12
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. 考察恋に落ちるかどうかは、あなた次第!

×