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

Capistrano 実践Tips集

  • 35,009 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • 素晴らしい。
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
35,009
On Slideshare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
140
Comments
1
Likes
67

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実践Tips集
    2009/09/07
    高倉 利明
  • 2. 目次
    これだけは入れとけ!便利なgem
    こう記述しろ!設定ファイル
    意外と知らない?注意点
  • 3. 1.これだけは入れとけ!  便利なgem
    ・capistrano_colors
    ・capistrano-ext
    ※インストール方法は割愛。
     ググれ!
  • 4. capistrano_colors
    何ができる?
    ->capistranoの実行コマンド、
     コメントなどを色づけしてくれる。
     地味だけど便利。
    使用後
    使用前
  • 5. capistrano-ext
    何ができる?
    ->環境に応じたcapistrano
     設定を差分ファイルで
     上書きする事が可能になる。
  • 6. capistrano-ext
    フォルダ構成
    Root
    └ /config
       └ deploy.rb (共通設定)
       └/deploy
       └staging.rb(staging差分)
       └production.rb(production差分)
  • 7. capistrano-ext
    環境ごとの「user」を置き換えたいなら。。。
    #config/deploy.rb
    set:user, “hogehoge“
    #config/deploy/staging.rb
    set:user, “fugafuga“
    #config/deploy/production.rb
    set:user, “piyopiyo“
  • 8. capistrano-ext
    ステージング環境へデプロイ
    本番環境へデプロイ
    $ cap staging deploy
    $ cap production deploy
  • 9. 2.こう記述しろ!設定ファイル
    (1) deploy.rbデフォルト記述
    (2) Passengerとの連携設定
    (3) パスワードなどの動的入力
    (4) プッシュ式デプロイ
  • 10. (1) deploy.rbデフォルト記述
    Q.deploy.rbファイル書くの面倒だよ!
      何かいい手ない?
    A.APサーバで以下のデフォルトルールに従えば~
    Railsの実行ユーザは「app」
    アプリ設置場所は「/u/apps」
    「app」ユーザに「/u/apps」以下のファイル作成・削除権限を与える
    サーバに公開鍵などでの
     パスワード無しsshログイン可能
  • 11. (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 “
  • 12. (2) Passengerとの連携設定
    Q.CapistranoをPassengerと
     連携させたいんだけど、
     何か記述しておいた方が良い?
    A.Passengerは「tmp/restart.txt 」
     にファイルがあると、自動的に
     そのアプリのみ再読み込みするので~
  • 13. (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
  • 14. (3) パスワードなどの動的入力
    Q.capistranoでセキュリティ要件が厳しいとき、
     以下のような要望が出てくる。
     さあどうしよう?
    セキュリティ要件でパスワードを設定ファイル上にベタ書きするのはNG
    Subversionサーバのパスワードをデプロイ担当者ごとに使い分けたい
    APサーバのパスワードをデプロイ担当者ごとに使い分けたい
    ...etc
  • 15. (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
  • 16. (4)プッシュ式デプロイ
    Q.セキュリティ上APサーバからSubversionリポジトリに
     アクセス出来ないんだって!
     これではデプロイできない。。。助けて!
    APサーバ
    Subversionサーバ
    Capistrano実行サーバ
  • 17. (4)プッシュ式デプロイ
    A. 「deploy_via, :copy」オプションを
     使うことで、プッシュ式デプロイを行いましょう。
    #config/deploy.rb
    set :deploy_via, :copy
  • 18. (4)プッシュ式デプロイ
    deploy_via:copyを設定すると
     1. capistrano実行サーバにチェックアウト
     2. APサーバにgzip圧縮してscpアップロード
     3. APサーバ上で展開して配置
    という流れでデプロイを行う事ができます。
    APサーバ



    Capistrano実行サーバ
    Subversionサーバ
  • 19. 3.意外と知らない?注意点
    ・role:dbの意味
    ・ユーザのアップロード画像などは
     どこに置くべき?
  • 20. role:dbの意味
    Q. role :dbに指定するサーバは、
    DBサーバで良いんだよね?
    A. いいえ。
     ×:DBサーバ
     ○:Migrationを実行するサーバ
     (ほとんどの場合APサーバと同じで良い)
  • 21. ユーザのアップロード画像置き場所
    Q.ユーザがアップロードした画像とか
     docファイルとかって、
     どこに配置しておくのが良いのかな?
  • 22. ユーザのアップロード画像置き場所
    A.shared/system以下にに置き、capistranoで
     public以下へシンボリックリンクを
     張りましょう。
    myapp
    └ current
    └ releases---20091122010101(最新アプリ)
    └ shared └log
      └ log └public
      └ system └ user_img
    └ user_img
    シンボリックリンク
    シンボリックリンク
    シンボリックリンク
  • 23. ユーザのアップロード画像置き場所
    シンボリックリンクを張る例:
    #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
  • 24. ご静聴
    ありがとう
    ございました。