1.これだけは入れとけ!便利なgem 2.こう記述しろ!設定ファイル 3.意外と知らない?注意点 ・capistrano_colors ・capistrano-ext ※インストール方法は割愛。 ググれ! 何ができる? →capistranoの実行コマンド、 コメントなどを色づけしてくれる。 地味だけど便利。 使用前 使用後 何ができる? →環境に応じたcapistrano 設定を差分ファイルで 上書きする事が可能になる。 フォルダ構成 Root └ /config └ deploy.rb (共通設定) └/deploy └staging.rb (staging差分) └production.rb (production差分) 環境ごとの「user」を置き換えたいなら。。。 #config/deploy.rb set :user, “hogehoge“ #config/deploy/staging.rb set :user, “fugafuga“ #config/deploy/production.rb set :user, “piyopiyo“ ステージング環境へデプロイ $ cap staging deploy 本番環境へデプロイ $ cap production deploy (1) (2) (3) (4) deploy.rb デフォルト記述 Passengerとの連携設定 パスワードなどの動的入力 プッシュ式デプロイ Q. deploy.rbファイル書くの面倒だよ! 何かいい手ない? A. APサーバで以下のデフォルトルールに従えば~ Railsの実行ユーザは「app」 アプリ設置場所は「/u/apps」 「app」ユーザに「/u/apps」以下のファイル作 成・削除権限を与える サーバに公開鍵などでの パスワード無しsshログイン可能 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 “ Q.CapistranoをPassengerと 連携させたいんだけど、 何か記述しておいた方が良い? A.Passengerは「tmp/restart.txt 」 にファイルがあると、自動的に そのアプリのみ再読み込みするので~ 以下のように再起動タスクを記述しておくと便利。 #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 end Q.capistranoでセキュリティ要件が厳しいとき、 以下のような要望が出てくる。 さあどうしよう? セキュリティ要件でパスワードを設定ファイル 上にベタ書きするのはNG Subversionサーバのパスワードをデプロイ担 当者ごとに使い分けたい APサーバのパスワードをデプロイ担当者ごとに 使い分けたい ...etc 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 Q.セキュリティ上APサーバからSubversionリポジトリに アクセス出来ないんだって! これではデプロイできない。。。助けて! APサーバ Subversionサーバ Capistrano実行サーバ A. 「deploy_via, :copy」オプションを 使うことで、プッシュ式デプロイを行い ましょう。 #config/deploy.rb set :deploy_via, :copy deploy_via :copyを設定すると 1. capistrano実行サーバにチェックアウト 2. APサーバにgzip圧縮してscpアップロード 3. APサーバ上で展開して配置 という流れでデプロイを行う事ができます。 APサーバ ③ ② ① Capistrano実行サーバ Subversionサーバ ・role:dbの意味 ・ユーザのアップロード画像などは どこに置くべき? Q. role :dbに指定するサーバは、 DBサーバで良いんだよね? A. いいえ。 ×:DBサーバ ○:Migrationを実行するサーバ (ほとんどの場合APサーバと同じで良い) Q. ユーザがアップロードした画像とか docファイルとかって、 どこに配置しておくのが良いのかな? A.shared/system以下にに置き、capistranoで public以下へシンボリックリンクを 張りましょう。 myapp シンボリックリンク └ current └ releases---20091122010101(最新アプリ) └ shared シンボリックリンク └log └ log └public シンボリックリンク └ system └ user_img └ user_img シンボリックリンクを張る例: #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 end ご静聴 ありがとう ございました。
© Copyright 2024 ExpyDoc