• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Capistrano 実践Tips集
 

Capistrano 実践Tips集

on

  • 30,259 views

 

Statistics

Views

Total Views
30,259
Views on SlideShare
29,456
Embed Views
803

Actions

Likes
64
Downloads
139
Comments
1

16 Embeds 803

http://d.hatena.ne.jp 627
http://www.slideshare.net 109
http://lab-jp.tumblr.com 27
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

11 of 1 previous next

  • 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
    • ご静聴
      ありがとう
      ございました。