Capistrano実践Tips集<br />2009/09/07<br />高倉 利明<br />
目次<br />これだけは入れとけ!便利なgem<br />こう記述しろ!設定ファイル<br />意外と知らない?注意点<br />
1.これだけは入れとけ!  便利なgem<br />・capistrano_colors<br />・capistrano-ext<br />※インストール方法は割愛。<br /> ググれ!<br />
capistrano_colors<br />何ができる?<br />->capistranoの実行コマンド、<br /> コメントなどを色づけしてくれる。<br /> 地味だけど便利。<br />使用後<br />使用前<br />
capistrano-ext<br />何ができる?<br />->環境に応じたcapistrano<br /> 設定を差分ファイルで<br /> 上書きする事が可能になる。<br />
capistrano-ext<br />フォルダ構成<br />Root<br />└ /config<br />   └ deploy.rb (共通設定)<br />   └/deploy<br />   └staging.rb(stagin...
capistrano-ext<br />環境ごとの「user」を置き換えたいなら。。。<br />#config/deploy.rb<br />set:user,     “hogehoge“<br />#config/deploy/stagi...
capistrano-ext<br />ステージング環境へデプロイ<br />本番環境へデプロイ<br />$ cap staging deploy<br />$ cap production deploy<br />
2.こう記述しろ!設定ファイル<br />(1) deploy.rbデフォルト記述<br />(2) Passengerとの連携設定<br />(3) パスワードなどの動的入力<br />(4) プッシュ式デプロイ<br />
(1) deploy.rbデフォルト記述<br />Q.deploy.rbファイル書くの面倒だよ!<br />  何かいい手ない?<br />A.APサーバで以下のデフォルトルールに従えば~<br />Railsの実行ユーザは「app」<br ...
(1) deploy.rbデフォルト記述<br />7行で済みます。<br />#config/deploy.rb<br />set :application,      “test “<br />set :scm,              ...
(2) Passengerとの連携設定<br />Q.CapistranoをPassengerと<br /> 連携させたいんだけど、<br /> 何か記述しておいた方が良い?<br />A.Passengerは「tmp/restart.txt ...
(2) Passengerとの連携設定<br />以下のように再起動タスクを記述しておくと便利。<br />#config/deploy.rb<br />namespace :deploy do<br />  task :restart, :r...
(3) パスワードなどの動的入力<br />Q.capistranoでセキュリティ要件が厳しいとき、<br /> 以下のような要望が出てくる。<br /> さあどうしよう?<br />セキュリティ要件でパスワードを設定ファイル上にベタ書きするの...
(3) パスワードなどの動的入力<br />A.Capistrano::CLIを使用すれば<br /> 動的入力できる!<br />#config/deploy.rb<br /># 入力(エコーバックあり)<br />set :scm_user...
(4)プッシュ式デプロイ<br />Q.セキュリティ上APサーバからSubversionリポジトリに<br /> アクセス出来ないんだって!<br /> これではデプロイできない。。。助けて!<br />APサーバ<br />Subversio...
(4)プッシュ式デプロイ<br />A. 「deploy_via, :copy」オプションを<br /> 使うことで、プッシュ式デプロイを行いましょう。<br />#config/deploy.rb<br />set :deploy_via, ...
(4)プッシュ式デプロイ<br />deploy_via:copyを設定すると<br /> 1. capistrano実行サーバにチェックアウト<br /> 2. APサーバにgzip圧縮してscpアップロード<br /> 3. APサーバ上で...
3.意外と知らない?注意点<br />・role:dbの意味<br />・ユーザのアップロード画像などは<br /> どこに置くべき?<br />
role:dbの意味<br />Q. role :dbに指定するサーバは、<br />DBサーバで良いんだよね?<br />A. いいえ。<br /> ×:DBサーバ<br /> ○:Migrationを実行するサーバ<br /> (ほとんどの...
ユーザのアップロード画像置き場所<br />Q.ユーザがアップロードした画像とか<br /> docファイルとかって、<br /> どこに配置しておくのが良いのかな?<br />
ユーザのアップロード画像置き場所<br />A.shared/system以下にに置き、capistranoで<br /> public以下へシンボリックリンクを<br /> 張りましょう。<br />myapp<br /> └ current...
ユーザのアップロード画像置き場所<br />シンボリックリンクを張る例:<br />#config/deploy.rb<br />after “deploy”, “deploy:link_images”<br />namespace(:depl...
ご静聴<br />ありがとう<br />ございました。<br />
Upcoming SlideShare
Loading in...5
×

Capistrano 実践Tips集

44,944

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
44,944
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
143
Comments
1
Likes
68
Embeds 0
No embeds

No notes for slide

Capistrano 実践Tips集

  1. 1. Capistrano実践Tips集<br />2009/09/07<br />高倉 利明<br />
  2. 2. 目次<br />これだけは入れとけ!便利なgem<br />こう記述しろ!設定ファイル<br />意外と知らない?注意点<br />
  3. 3. 1.これだけは入れとけ!  便利なgem<br />・capistrano_colors<br />・capistrano-ext<br />※インストール方法は割愛。<br /> ググれ!<br />
  4. 4. capistrano_colors<br />何ができる?<br />->capistranoの実行コマンド、<br /> コメントなどを色づけしてくれる。<br /> 地味だけど便利。<br />使用後<br />使用前<br />
  5. 5. capistrano-ext<br />何ができる?<br />->環境に応じたcapistrano<br /> 設定を差分ファイルで<br /> 上書きする事が可能になる。<br />
  6. 6. capistrano-ext<br />フォルダ構成<br />Root<br />└ /config<br />   └ deploy.rb (共通設定)<br />   └/deploy<br />   └staging.rb(staging差分)<br />   └production.rb(production差分)<br />
  7. 7. capistrano-ext<br />環境ごとの「user」を置き換えたいなら。。。<br />#config/deploy.rb<br />set:user, “hogehoge“<br />#config/deploy/staging.rb<br />set:user, “fugafuga“<br />#config/deploy/production.rb<br />set:user, “piyopiyo“<br />
  8. 8. capistrano-ext<br />ステージング環境へデプロイ<br />本番環境へデプロイ<br />$ cap staging deploy<br />$ cap production deploy<br />
  9. 9. 2.こう記述しろ!設定ファイル<br />(1) deploy.rbデフォルト記述<br />(2) Passengerとの連携設定<br />(3) パスワードなどの動的入力<br />(4) プッシュ式デプロイ<br />
  10. 10. (1) deploy.rbデフォルト記述<br />Q.deploy.rbファイル書くの面倒だよ!<br />  何かいい手ない?<br />A.APサーバで以下のデフォルトルールに従えば~<br />Railsの実行ユーザは「app」<br />アプリ設置場所は「/u/apps」<br />「app」ユーザに「/u/apps」以下のファイル作成・削除権限を与える<br />サーバに公開鍵などでの<br /> パスワード無しsshログイン可能<br />
  11. 11. (1) deploy.rbデフォルト記述<br />7行で済みます。<br />#config/deploy.rb<br />set :application, “test “<br />set :scm, “subversion“<br />set :scm_user, “hogehoge“<br />set :scm_password, “fugafuga“<br />role :web, “web.test.com“<br />role :app, “app.test.com“<br />role :db, “db.test.com “<br />
  12. 12. (2) Passengerとの連携設定<br />Q.CapistranoをPassengerと<br /> 連携させたいんだけど、<br /> 何か記述しておいた方が良い?<br />A.Passengerは「tmp/restart.txt 」<br /> にファイルがあると、自動的に<br /> そのアプリのみ再読み込みするので~<br />
  13. 13. (2) Passengerとの連携設定<br />以下のように再起動タスクを記述しておくと便利。<br />#config/deploy.rb<br />namespace :deploy do<br /> task :restart, :roles =&gt; :app do<br /> run &quot;touch #{current_release}/tmp/restart.txt”<br />end<br /># 以下タスクはApache自体の起動/停止に使用。複数アプリを<br /># 単一Apacheで公開している場合は使用しない方が良い<br /> task :start, :roles =&gt; :appdo<br /> run &quot;sudo /etc/rc.d/init.dhttpd start &quot;<br />end<br /> task :stop, :roles =&gt; :app do<br /> run &quot;sudo /etc/rc.d/init.dhttpd stop &quot;<br />end<br />end<br />
  14. 14. (3) パスワードなどの動的入力<br />Q.capistranoでセキュリティ要件が厳しいとき、<br /> 以下のような要望が出てくる。<br /> さあどうしよう?<br />セキュリティ要件でパスワードを設定ファイル上にベタ書きするのはNG<br />Subversionサーバのパスワードをデプロイ担当者ごとに使い分けたい<br />APサーバのパスワードをデプロイ担当者ごとに使い分けたい<br />...etc<br />
  15. 15. (3) パスワードなどの動的入力<br />A.Capistrano::CLIを使用すれば<br /> 動的入力できる!<br />#config/deploy.rb<br /># 入力(エコーバックあり)<br />set :scm_userdo<br /> Capistrano::CLI.ui.ask (“scm user:”)<br />end<br /># パスワード (エコーバックなし)<br />set :scm_passworddo<br /> Capistrano::CLI.password_prompt(“scm pass:”)<br />end<br />
  16. 16. (4)プッシュ式デプロイ<br />Q.セキュリティ上APサーバからSubversionリポジトリに<br /> アクセス出来ないんだって!<br /> これではデプロイできない。。。助けて!<br />APサーバ<br />Subversionサーバ<br />Capistrano実行サーバ<br />
  17. 17. (4)プッシュ式デプロイ<br />A. 「deploy_via, :copy」オプションを<br /> 使うことで、プッシュ式デプロイを行いましょう。<br />#config/deploy.rb<br />set :deploy_via, :copy<br />
  18. 18. (4)プッシュ式デプロイ<br />deploy_via:copyを設定すると<br /> 1. capistrano実行サーバにチェックアウト<br /> 2. APサーバにgzip圧縮してscpアップロード<br /> 3. APサーバ上で展開して配置<br />という流れでデプロイを行う事ができます。<br />APサーバ<br />③<br />②<br />①<br />Capistrano実行サーバ<br />Subversionサーバ<br />
  19. 19. 3.意外と知らない?注意点<br />・role:dbの意味<br />・ユーザのアップロード画像などは<br /> どこに置くべき?<br />
  20. 20. role:dbの意味<br />Q. role :dbに指定するサーバは、<br />DBサーバで良いんだよね?<br />A. いいえ。<br /> ×:DBサーバ<br /> ○:Migrationを実行するサーバ<br /> (ほとんどの場合APサーバと同じで良い)<br />
  21. 21. ユーザのアップロード画像置き場所<br />Q.ユーザがアップロードした画像とか<br /> docファイルとかって、<br /> どこに配置しておくのが良いのかな?<br />
  22. 22. ユーザのアップロード画像置き場所<br />A.shared/system以下にに置き、capistranoで<br /> public以下へシンボリックリンクを<br /> 張りましょう。<br />myapp<br /> └ current<br /> └ releases---20091122010101(最新アプリ)<br /> └ shared └log<br />  └ log └public<br />  └ system └ user_img<br /> └ user_img<br />シンボリックリンク<br />シンボリックリンク<br />シンボリックリンク<br />
  23. 23. ユーザのアップロード画像置き場所<br />シンボリックリンクを張る例:<br />#config/deploy.rb<br />after “deploy”, “deploy:link_images”<br />namespace(:deploy) do<br /> task :link_imagesdo<br /> run &lt;&lt;-CMD<br />cd #{release_path} &&<br />ln –nfs #{shared_path}/user_images<br /> #{release_path}/public/user_images<br /> CMD<br />end<br />end<br />
  24. 24. ご静聴<br />ありがとう<br />ございました。<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×