SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
Capistrano勉強会
デプロイってどうやると
  思いますか?
デプロイに
求められる要件は?
● いろんなホストへデプロイできる

● リリース物件のバージョン管理

● sshで接続

● gitやsubversionとの連携

● root権限のコマンドも使える などなど

● windows
Capistrano
Capistranoのサーバ構成 push式
   2.gzip圧縮
                                          set :deploy_via, :copy を
                                          設定するとpushデプロイになるよ
         クライアントPC
                              1.チェックアウト
                                          おそらく、:remote_cacheも
               capistrano




       3.scp


                                             アプリケーション




                   アプリケーション                 ソースコードリポジトリ
                                                github
4.展開       Webサーバ


         アプリケーションサーバ
Capistranoのファイル構成
deploy流れ
ソースコード
deploy
  update
     update_code
        strategy.deploy! (REVISIONはここでできる)
        finalize_update
     create_symlink
  restart
その他のtask

deploy:setup
  releases, sharedディレクトリを作成
  $ cap HOSTS=new.server.com deploy:setup




deploy:upload
  デプロイ先にファイルをアップロード
  $ cap deploy:upload FILES='config/apache/*.conf'




shell、 cleanup、 migrate、 invoke とかもある
bundle install
require 'bundler/capistrano'
をやると自動的にfinalize_updateの後に実行してく
れる

ソースコード


bundlerに組み込まれた機能
設定
roleメソッドで指定

  role :app, host1, host2, host3
set メソッドで指定

  set :application, "app1"

    属性             必須   デフォルト値                   例
    :application   ○    -                        app1

    :repository    ○    -                        git@github.com・・・・

    :scm           -    :subversion              :git

    :deploy_via    -    :co                      :remote_cache
                                                 説明

    :ssh_options   -    ?                        {:user => "deploy", :key => ["~/.
                                                 ssh/id_rsa"]}

    :deploy_to     -    /u/apps/#{application}

    :branch        -    ?                        develop

    :revision      -    -                        195a9da5fafca8d8f43e27bddf488
                                                 7c8645245a2
                                                 ※設定した場合、branchが無視される
task登録①

taskを自分で作ることもできる

namespace :deploy do
 task :start do; end
 task :stop do; end

 task :restart, :roles => :app do
   run "touch #{File.join(current_path,'tmp','restart.txt')}"
 end

 task :update_database_settings do
   run "ln -sf #{shared_path}/config/settings.yml #{latest_release}/config/"
   run "ln -sf #{shared_path}/config/database.yml #{latest_release}/config/"
 end
end
task登録②

● run
  ○ シェルコマンドを実行
    ■ run "echo hoge"
● sudo
  ○ run をsudo権限で実行
● put
  ○ サーバにファイルをアップロード
● delete
  ○ サーバ上のファイル削除
● on_rollback
  ○ ロールバック時に呼び出される
コールバック

各タスクの実行前後に別のタスクを登録できる

before 'deploy:finalize_update', 'deploy:update_database_settings'
windows
● FreeSSHdをつかって無理やりsshで接続可能
  にしている

● シンボリックリンクが貼れないため、その部分が
  コピー

● remote_cacheが効かない
終わりに

● いろんなホストへデプロイできる      ⇒ ○

● リリース物件のバージョン管理       ⇒ ○

● sshで接続               ⇒ ○

● gitやsubversionとの連携   ⇒ ○

● root権限のコマンドも使える      ⇒ ○
   などなど
● windows              ⇒ △

Contenu connexe

Tendances

2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる
airtoxin Ishii
 
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced MogilefsShibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefs
guest172cfb
 
Webサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのことWebサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのこと
TrinityT _
 
Docker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレDocker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレ
peryaudo
 
Python開発環境三種の神器
Python開発環境三種の神器Python開発環境三種の神器
Python開発環境三種の神器
Yukitaka Uchikoshi
 
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2
学 松崎
 

Tendances (20)

2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる
 
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced MogilefsShibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefs
 
Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)
 
Openresty
OpenrestyOpenresty
Openresty
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会
 
静的サイトどこにする?
静的サイトどこにする?静的サイトどこにする?
静的サイトどこにする?
 
Webサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのことWebサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのこと
 
Mysql casial01
Mysql casial01Mysql casial01
Mysql casial01
 
あの日実行したコンテナの名前を僕達はまだ知らない。
あの日実行したコンテナの名前を僕達はまだ知らない。あの日実行したコンテナの名前を僕達はまだ知らない。
あの日実行したコンテナの名前を僕達はまだ知らない。
 
Capistranoで自動デプロイ
Capistranoで自動デプロイCapistranoで自動デプロイ
Capistranoで自動デプロイ
 
Yesod on Heroku
Yesod on HerokuYesod on Heroku
Yesod on Heroku
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例
 
Fabric Essentials
Fabric EssentialsFabric Essentials
Fabric Essentials
 
Docker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレDocker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレ
 
Drone.io のご紹介
Drone.io のご紹介Drone.io のご紹介
Drone.io のご紹介
 
Circle ci and docker+serverspec
Circle ci and docker+serverspecCircle ci and docker+serverspec
Circle ci and docker+serverspec
 
Nuxt.js + microCMS + netlify
Nuxt.js + microCMS + netlifyNuxt.js + microCMS + netlify
Nuxt.js + microCMS + netlify
 
Python開発環境三種の神器
Python開発環境三種の神器Python開発環境三種の神器
Python開発環境三種の神器
 
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2
 
カジュアルにバックアップ - MySQL Casual Talks 福岡
カジュアルにバックアップ - MySQL Casual Talks 福岡カジュアルにバックアップ - MySQL Casual Talks 福岡
カジュアルにバックアップ - MySQL Casual Talks 福岡
 

Similaire à Capistrano

環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
Etsuji Nakai
 
Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud Automation
Etsuji Nakai
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
Yohei Fushii
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
hiro345
 

Similaire à Capistrano (20)

環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
Vyatta 改造入門
Vyatta 改造入門Vyatta 改造入門
Vyatta 改造入門
 
Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud Automation
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニック
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
Git (運用編)
Git (運用編)Git (運用編)
Git (運用編)
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChef
 
Gws 20130315 gradle_handson
Gws 20130315 gradle_handsonGws 20130315 gradle_handson
Gws 20130315 gradle_handson
 
WDD2012_SC-004
WDD2012_SC-004WDD2012_SC-004
WDD2012_SC-004
 
qmake入門
qmake入門qmake入門
qmake入門
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
GitLab + Dokku で作る CI/CD 環境
GitLab + Dokku で作る CI/CD 環境GitLab + Dokku で作る CI/CD 環境
GitLab + Dokku で作る CI/CD 環境
 
Fig
FigFig
Fig
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
 

Capistrano