Presentation is loading. Please wait.

Presentation is loading. Please wait.

1. これだけは入れとけ!便利な gem 2. こう記述しろ!設定ファイル 3. 意外と知らない?注意点.

Similar presentations


Presentation on theme: "1. これだけは入れとけ!便利な gem 2. こう記述しろ!設定ファイル 3. 意外と知らない?注意点."— Presentation transcript:

1

2 1. これだけは入れとけ!便利な gem 2. こう記述しろ!設定ファイル 3. 意外と知らない?注意点

3 ・ capistrano_colors ・ capistrano-ext ※インストール方法は割愛。 ググれ!

4 使用前 使用後 何ができる? → capistrano の実行コマンド、 コメントなどを色づけしてくれる。 地味だけど便利。

5 何ができる? → 環境に応じた capistrano 設定を差分ファイルで 上書きする事が可能になる。

6  フォルダ構成 Root └ /config └ deploy.rb ( 共通設定 ) └ /deploy └ staging.rb ( staging 差分) └ production.rb ( production 差分)

7 環境ごとの「 user 」を置き換えたいなら。。。 #config/deploy.rb set :user, “hogehoge“ #config/deploy/staging.rb set :user, “fugafuga“ #config/deploy/production.rb set :user, “piyopiyo“

8 ステージング環境へデプロイ 本番環境へデプロイ $ cap staging deploy $ cap production deploy

9 (1) deploy.rb デフォルト記述 (2) Passenger との連携設定 (3) パスワードなどの動的入力 (4) プッシュ式デプロイ

10 Q. deploy.rb ファイル書くの面倒だよ! 何かいい手ない? A. AP サーバで以下のデフォルトルールに従えば~  Rails の実行ユーザは「 app 」  アプリ設置場所は「 /u/apps 」  「 app 」ユーザに「 /u/apps 」以下のファイル作 成・削除権限を与える  サーバに公開鍵などでの パスワード無し ssh ログイン可能

11 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 Q.Capistrano を Passenger と 連携させたいんだけど、 何か記述しておいた方が良い? A.Passenger は「 tmp/restart.txt 」 にファイルがあると、自動的に そのアプリのみ再読み込みするので~

13 以下のように再起動タスクを記述しておくと便利。 #config/deploy.rb namespace :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 " end

14 Q.capistrano でセキュリティ要件が厳しいとき、 以下のような要望が出てくる。 さあどうしよう?  セキュリティ要件でパスワードを設定ファイル 上にベタ書きするのは NG  Subversion サーバのパスワードをデプロイ担 当者ごとに使い分けたい  AP サーバのパスワードをデプロイ担当者ごとに 使い分けたい...etc

15 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

16 AP サーバ Capistrano 実行サーバ Subversion サーバ Q. セキュリティ上 AP サーバから Subversion リポジトリに アクセス出来ないんだって! これではデプロイできない。。。助けて!

17 A. 「 deploy_via, :copy 」オプションを 使うことで、プッシュ式デプロイを行い ましょう。 #config/deploy.rb set :deploy_via, :copy

18 AP サーバ Capistrano 実行サーバ Subversion サーバ deploy_via :copy を設定すると 1. capistrano 実行サーバにチェックアウト 2. AP サーバに gzip 圧縮して scp アップロード 3. AP サーバ上で展開して配置 という流れでデプロイを行う事ができます。 ① ② ③

19 ・ role:db の意味 ・ユーザのアップロード画像などは どこに置くべき?

20 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_images do run <<-CMD cd #{release_path} && ln –nfs #{shared_path}/user_images #{release_path}/public/user_images CMD end

24 ご静聴 ありがとう ございました。


Download ppt "1. これだけは入れとけ!便利な gem 2. こう記述しろ!設定ファイル 3. 意外と知らない?注意点."

Similar presentations


Ads by Google