Your SlideShare is downloading. ×
0
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Capistrano 実践Tips集
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Capistrano 実践Tips集

43,489

Published on

Published in: Technology
1 Comment
68 Likes
Statistics
Notes
  • 素晴らしい。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
43,489
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
142
Comments
1
Likes
68
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. ご静聴
    ありがとう
    ございました。

×