SlideShare a Scribd company logo
1 of 16
Download to read offline
Ruby / Ruby on Railsビギナーズ倶楽部
Capistranoで、
自動デプロイに挑戦しよう!
2015.09.26
Self-Intoroduction
徳島県出身です
(ó `o) 一緒に勉強しましょう( ́ ▽ ` )ノ
勉強会やってます!
アプリケーションエンジニア(Rails/LAMP/Java/Oracle)
アウトプットを主軸においた、勉強会を運営しています:)
Click
1)Capistranoって何?
Today's Agenda
2)Capistranoの構成
3)Capistranoの利用条件
Capistrano3
カピストラーノ
4)Capistranoができること
1)Capistranoって何?
・オープンソースのツール。
・アプリケーションのデプロイ自動化ツール。
・Rubyで書かれていて、RubyGemで
 配布されている。
・Rubyのインストールが必須。
複数のサーバに同じコマンドを
送信できるツール。
手動でデプロイする場合
・デプロイ先のソースをバックアップ。
・メンテナンス画面に切り替える。
・データベースメンテナンス(マイグレーション)
・ソースを最新に更新。
・RailsやSinatraを利用している場合は、
bundle installを実行。
・サーバの再起動。
・一台へのデプロイも面倒。
・複数台になると、さらに辛い。
・人的ミスが発生しやすい。
・リリース作業が属人化してしまう。
・気軽にデプロイができない。
手動でデプロイするデメリット
Capistranoを導入するメリット
・コマンド一つで誰でも簡単に
 デプロイができる。
・デプロイ作業が属人化しない。
・1日に何度もデプロイを行えて、
 開発効率が向上する。
Capistranoでデプロイするメリット
・複数台へのデプロイもコマンド一発!
2)Capistranoの構成
プッシュチェックアウト
コマンド
clone ( SSH )
clone ( SSH )
Capistranoインストール
導入から実行までの流れ
1)Gemfileの修正。
2)Capistranoインストール。
  bundle install
3)設定関連のファイルを生成。
  bundle exec cap install
4)各設定ファイルを修正。
5)デプロイ実行。
  bundle exec cap production deploy
Capfile

config/deploy.rb

config/deploy/production.rb

lib/capistrano/tasks/xxx.rake
3)Capistranoの利用条件
・ローカルマシン(送信元)に、RubyとCapistranoを
 インストール。サーバ(送信先)には不要。
・ローカルマシンから、サーバにSSH接続ができること。
・全てのサーバに同じユーザと同じパスワードで、
 接続できること。
複数台にデプロイする場合
・もしくは、公開鍵・秘密鍵を利用したパスワードなしの
 接続ができること。
基 本
デプロイ先のディレクトリ構成
¦- current -> /var/www/project/releases/20150922092047
¦- releases
¦  ¦- 20150922092047
¦  ¦- 20150921131342
¦- repo
¦- revisions.log
`- shared
  ¦- log
¦- pids
`- system
Webサーバは、
currentディレクトリを
ドキュメントルートに指定。
4)Capistranoができること
・デプロイ
・ロールバック
・メンテナンス画面への切り替え
・マイグレーション
・データベースのバックアップ
DevOps
開発(Development)と、運用(Operations)が
密接に連携して開発効率を上げる手法。
Capistrano、Chef、Puppet等は、
DepOpsを実現するツール。
ま と め
・リリース作業を自動化することで、効率良く
 細かいサイクルでリリースが行えるようになる。
・属人化を防ぐことができる。
・ミスを少なくすることができる。
一台へのリリース作業でも、導入すると楽になれるのでオススメ!
開発ブログ始めました!!
http://ticklecode.com/
ドメイン取得から、
AWS + Rails4 + Capistrano3 + Nginx + pumaの
環境で、Webサービス開発を行う過程を、
共有していければと思ってます:)
間違いは、やさしく
教えてください m(__)m
Let's study together!
Thank you :)

More Related Content

More from Kanako Kobayashi

Movable Type Data API連携!店舗情報を地図に表示させよう!
Movable Type Data API連携!店舗情報を地図に表示させよう!Movable Type Data API連携!店舗情報を地図に表示させよう!
Movable Type Data API連携!店舗情報を地図に表示させよう!Kanako Kobayashi
 
Rubyを楽しくする第一歩!ブロックを理解する!
Rubyを楽しくする第一歩!ブロックを理解する!Rubyを楽しくする第一歩!ブロックを理解する!
Rubyを楽しくする第一歩!ブロックを理解する!Kanako Kobayashi
 
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!Kanako Kobayashi
 
Xcodeのデバッグを極めよう!
Xcodeのデバッグを極めよう!Xcodeのデバッグを極めよう!
Xcodeのデバッグを極めよう!Kanako Kobayashi
 
Swiftオープンソース化ってなんですか?
Swiftオープンソース化ってなんですか?Swiftオープンソース化ってなんですか?
Swiftオープンソース化ってなんですか?Kanako Kobayashi
 
Railsで非同期処理を実装しよう!!
Railsで非同期処理を実装しよう!!Railsで非同期処理を実装しよう!!
Railsで非同期処理を実装しよう!!Kanako Kobayashi
 
Swiftで、Webサーバにデータを送信・登録しよう!
Swiftで、Webサーバにデータを送信・登録しよう!Swiftで、Webサーバにデータを送信・登録しよう!
Swiftで、Webサーバにデータを送信・登録しよう!Kanako Kobayashi
 
楽しいSwift!クラスと構造体を知る:)
楽しいSwift!クラスと構造体を知る:)楽しいSwift!クラスと構造体を知る:)
楽しいSwift!クラスと構造体を知る:)Kanako Kobayashi
 
WordPressの構造を理解しよう
WordPressの構造を理解しようWordPressの構造を理解しよう
WordPressの構造を理解しようKanako Kobayashi
 
Swiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみようSwiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみようKanako Kobayashi
 
Ruby on Railsではじめるrspecテスト
Ruby on RailsではじめるrspecテストRuby on Railsではじめるrspecテスト
Ruby on RailsではじめるrspecテストKanako Kobayashi
 
oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!Kanako Kobayashi
 
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回Kanako Kobayashi
 
シェイクを検知して学ぼう、モーションイベント!
シェイクを検知して学ぼう、モーションイベント!シェイクを検知して学ぼう、モーションイベント!
シェイクを検知して学ぼう、モーションイベント!Kanako Kobayashi
 
Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計Kanako Kobayashi
 
Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Kanako Kobayashi
 
railsはじめの一歩
railsはじめの一歩railsはじめの一歩
railsはじめの一歩Kanako Kobayashi
 
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」Kanako Kobayashi
 
20141220_iOS8マルチデバイス対応(Size Classes編)
20141220_iOS8マルチデバイス対応(Size Classes編)20141220_iOS8マルチデバイス対応(Size Classes編)
20141220_iOS8マルチデバイス対応(Size Classes編)Kanako Kobayashi
 
Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Kanako Kobayashi
 

More from Kanako Kobayashi (20)

Movable Type Data API連携!店舗情報を地図に表示させよう!
Movable Type Data API連携!店舗情報を地図に表示させよう!Movable Type Data API連携!店舗情報を地図に表示させよう!
Movable Type Data API連携!店舗情報を地図に表示させよう!
 
Rubyを楽しくする第一歩!ブロックを理解する!
Rubyを楽しくする第一歩!ブロックを理解する!Rubyを楽しくする第一歩!ブロックを理解する!
Rubyを楽しくする第一歩!ブロックを理解する!
 
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
 
Xcodeのデバッグを極めよう!
Xcodeのデバッグを極めよう!Xcodeのデバッグを極めよう!
Xcodeのデバッグを極めよう!
 
Swiftオープンソース化ってなんですか?
Swiftオープンソース化ってなんですか?Swiftオープンソース化ってなんですか?
Swiftオープンソース化ってなんですか?
 
Railsで非同期処理を実装しよう!!
Railsで非同期処理を実装しよう!!Railsで非同期処理を実装しよう!!
Railsで非同期処理を実装しよう!!
 
Swiftで、Webサーバにデータを送信・登録しよう!
Swiftで、Webサーバにデータを送信・登録しよう!Swiftで、Webサーバにデータを送信・登録しよう!
Swiftで、Webサーバにデータを送信・登録しよう!
 
楽しいSwift!クラスと構造体を知る:)
楽しいSwift!クラスと構造体を知る:)楽しいSwift!クラスと構造体を知る:)
楽しいSwift!クラスと構造体を知る:)
 
WordPressの構造を理解しよう
WordPressの構造を理解しようWordPressの構造を理解しよう
WordPressの構造を理解しよう
 
Swiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみようSwiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみよう
 
Ruby on Railsではじめるrspecテスト
Ruby on RailsではじめるrspecテストRuby on Railsではじめるrspecテスト
Ruby on Railsではじめるrspecテスト
 
oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!
 
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
 
シェイクを検知して学ぼう、モーションイベント!
シェイクを検知して学ぼう、モーションイベント!シェイクを検知して学ぼう、モーションイベント!
シェイクを検知して学ぼう、モーションイベント!
 
Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計
 
Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207
 
railsはじめの一歩
railsはじめの一歩railsはじめの一歩
railsはじめの一歩
 
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
 
20141220_iOS8マルチデバイス対応(Size Classes編)
20141220_iOS8マルチデバイス対応(Size Classes編)20141220_iOS8マルチデバイス対応(Size Classes編)
20141220_iOS8マルチデバイス対応(Size Classes編)
 
Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2
 

Capistranoで、自動デプロイに挑戦しよう!