Capistrano 実践Tips集
Upcoming SlideShare
Loading in...5
×
 

Capistrano 実践Tips集

on

  • 41,268 views

 

Statistics

Views

Total Views
41,268
Views on SlideShare
40,464
Embed Views
804

Actions

Likes
65
Downloads
140
Comments
1

16 Embeds 804

http://d.hatena.ne.jp 627
http://www.slideshare.net 109
http://lab-jp.tumblr.com 28
http://s.deeeki.com 14
http://codenote.net 7
http://webcache.googleusercontent.com 4
http://localhost 3
https://twitter.com 2
http://paper.li 2
http://us-w1.rockmelt.com 2
http://74.125.153.132 1
https://twimg0-a.akamaihd.net 1
http://lifeast.net 1
http://party4r.com 1
http://seekr-artemis.heroku.com 1
https://si0.twimg.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

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…
  • 素晴らしい。
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Capistrano 実践Tips集 Capistrano 実践Tips集 Presentation Transcript

  • Capistrano実践Tips集
    2009/09/07
    高倉 利明
  • 目次
    これだけは入れとけ!便利なgem
    こう記述しろ!設定ファイル
    意外と知らない?注意点
  • 1.これだけは入れとけ!  便利なgem
    ・capistrano_colors
    ・capistrano-ext
    ※インストール方法は割愛。
     ググれ!
  • capistrano_colors
    何ができる?
    ->capistranoの実行コマンド、
     コメントなどを色づけしてくれる。
     地味だけど便利。
    使用後
    使用前
  • capistrano-ext
    何ができる?
    ->環境に応じたcapistrano
     設定を差分ファイルで
     上書きする事が可能になる。
  • capistrano-ext
    フォルダ構成
    Root
    └ /config
       └ deploy.rb (共通設定)
       └/deploy
       └staging.rb(staging差分)
       └production.rb(production差分)
  • capistrano-ext
    環境ごとの「user」を置き換えたいなら。。。
    #config/deploy.rb
    set:user, “hogehoge“
    #config/deploy/staging.rb
    set:user, “fugafuga“
    #config/deploy/production.rb
    set:user, “piyopiyo“
  • capistrano-ext
    ステージング環境へデプロイ
    本番環境へデプロイ
    $ cap staging deploy
    $ cap production deploy
  • 2.こう記述しろ!設定ファイル
    (1) deploy.rbデフォルト記述
    (2) Passengerとの連携設定
    (3) パスワードなどの動的入力
    (4) プッシュ式デプロイ
  • (1) deploy.rbデフォルト記述
    Q.deploy.rbファイル書くの面倒だよ!
      何かいい手ない?
    A.APサーバで以下のデフォルトルールに従えば~
    Railsの実行ユーザは「app」
    アプリ設置場所は「/u/apps」
    「app」ユーザに「/u/apps」以下のファイル作成・削除権限を与える
    サーバに公開鍵などでの
     パスワード無しsshログイン可能
  • (1) deploy.rbデフォルト記述
    7行で済みます。
    #config/deploy.rb
    set :application, “test “
    set :scm, “subversion“
    set :scm_user, “hogehoge“
    set :scm_password, “fugafuga“
    role :web, “web.test.com“
    role :app, “app.test.com“
    role :db, “db.test.com “
  • (2) Passengerとの連携設定
    Q.CapistranoをPassengerと
     連携させたいんだけど、
     何か記述しておいた方が良い?
    A.Passengerは「tmp/restart.txt 」
     にファイルがあると、自動的に
     そのアプリのみ再読み込みするので~
  • (2) Passengerとの連携設定
    以下のように再起動タスクを記述しておくと便利。
    #config/deploy.rb
    namespace :deploy do
    task :restart, :roles => :app do
    run "touch #{current_release}/tmp/restart.txt”
    end
    # 以下タスクはApache自体の起動/停止に使用。複数アプリを
    # 単一Apacheで公開している場合は使用しない方が良い
    task :start, :roles => :appdo
    run "sudo /etc/rc.d/init.dhttpd start "
    end
    task :stop, :roles => :app do
    run "sudo /etc/rc.d/init.dhttpd stop "
    end
    end
  • (3) パスワードなどの動的入力
    Q.capistranoでセキュリティ要件が厳しいとき、
     以下のような要望が出てくる。
     さあどうしよう?
    セキュリティ要件でパスワードを設定ファイル上にベタ書きするのはNG
    Subversionサーバのパスワードをデプロイ担当者ごとに使い分けたい
    APサーバのパスワードをデプロイ担当者ごとに使い分けたい
    ...etc
  • (3) パスワードなどの動的入力
    A.Capistrano::CLIを使用すれば
     動的入力できる!
    #config/deploy.rb
    # 入力(エコーバックあり)
    set :scm_userdo
    Capistrano::CLI.ui.ask (“scm user:”)
    end
    # パスワード (エコーバックなし)
    set :scm_passworddo
    Capistrano::CLI.password_prompt(“scm pass:”)
    end
  • (4)プッシュ式デプロイ
    Q.セキュリティ上APサーバからSubversionリポジトリに
     アクセス出来ないんだって!
     これではデプロイできない。。。助けて!
    APサーバ
    Subversionサーバ
    Capistrano実行サーバ
  • (4)プッシュ式デプロイ
    A. 「deploy_via, :copy」オプションを
     使うことで、プッシュ式デプロイを行いましょう。
    #config/deploy.rb
    set :deploy_via, :copy
  • (4)プッシュ式デプロイ
    deploy_via:copyを設定すると
     1. capistrano実行サーバにチェックアウト
     2. APサーバにgzip圧縮してscpアップロード
     3. APサーバ上で展開して配置
    という流れでデプロイを行う事ができます。
    APサーバ



    Capistrano実行サーバ
    Subversionサーバ
  • 3.意外と知らない?注意点
    ・role:dbの意味
    ・ユーザのアップロード画像などは
     どこに置くべき?
  • role:dbの意味
    Q. role :dbに指定するサーバは、
    DBサーバで良いんだよね?
    A. いいえ。
     ×:DBサーバ
     ○:Migrationを実行するサーバ
     (ほとんどの場合APサーバと同じで良い)
  • ユーザのアップロード画像置き場所
    Q.ユーザがアップロードした画像とか
     docファイルとかって、
     どこに配置しておくのが良いのかな?
  • ユーザのアップロード画像置き場所
    A.shared/system以下にに置き、capistranoで
     public以下へシンボリックリンクを
     張りましょう。
    myapp
    └ current
    └ releases---20091122010101(最新アプリ)
    └ shared └log
      └ log └public
      └ system └ user_img
    └ user_img
    シンボリックリンク
    シンボリックリンク
    シンボリックリンク
  • ユーザのアップロード画像置き場所
    シンボリックリンクを張る例:
    #config/deploy.rb
    after “deploy”, “deploy:link_images”
    namespace(:deploy) do
    task :link_imagesdo
    run <<-CMD
    cd #{release_path} &&
    ln –nfs #{shared_path}/user_images
    #{release_path}/public/user_images
    CMD
    end
    end
  • ご静聴
    ありがとう
    ございました。