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