Capistrano で簡単に複数サイトへのデプロイを行えるようにする
Capistrano で複数サイトへのデプロイを1つの設定ファイルで行える事を最近知ったので書いておきます。
Webシステムでは本番環境以外に最終確認の為のStaging環境を持つことが多いと思います、Staging環境は本番環境とは別のサーバーだったり、同じサーバーでもディレクトリー(URL)が別だったりします。そのような環境へのデプロイも1つの設定ファイルで運用できます。
例 : Staging環境は本番環境が別サーバー
config/deploy.rb
ssh_options[:forward_agent] = true set :application, "abc" set :scm, :git set :repository, "ssh://abc@abc_git.com/var/lib/git/#{application}.git" set :branch, 'master' set :deploy_via, :remote_cache set :deploy_to, "/home/rails_app/#{application}" set :use_sudo, false task :staging do set :domain, "abc_staging.net" set :user, "abc_dev" set :rails_env, :staging role :app, domain role :web, domain role :db, domain, :primary => true end task :production do puts "\n\e[0;31m Are you REALLY sure you want to deploy to production? \e[0m\n" proceed = STDIN.gets[0..0] rescue nil exit unless proceed == 'y' || proceed == 'Y' set :domain, "abc.co.jp" set :user, "abc_pro" set :rails_env, :production role :app, domain role :web, domain role :db, domain, :primary => true end
この設定で staging へのデプロイは
cap staging deploy
本番環境へのデプロイは
cap production deploy
で行えます。さらに本番環境へデプロイでは 赤字で Are you REALLY sure you want to deploy to production? とコンソールに確認が出るので、間違って本番へデプロイしてしまうのが防げます。
(本番へのデプロイ時はここで、大きく深呼吸してから Y