Capistrano 3 の設定
目的
Capistrano 3.x でデプロイ環境を作ること。
環境
- 開発、本番環境ともに、rbenv(0.4.0)でRuby( 2.0.0-p247)をインストール済み。
- 本番サーバーはAWS EC2 Linux。インスタンスとセキュリティーグループ設定済み。
- レポジトリ管理はgithub。github上にてレポジトリ作成済み。開発、本番環境ともに、ssh-keyの設定済み。
- DBは開発、本番環境ともにsqlite。
- 本番環境のデプロイ先のディレクトリは、/var/www/。
Gemfile
Gemfileを編集します。
group :development do gem "capistrano-bundler" gem "capistrano-rails" gem "capistrano-rbenv" end
続いてインストール。
bundle install bundle exec cap install
Capfile
出来上がったCapfileを編集します。
require 'capistrano/setup' require 'capistrano/deploy' require 'capistrano/rbenv' set :rbenv_type, :system set :rbenv_ruby, "2.0.0-p247" require 'capistrano/bundler' require 'capistrano/rails/assets' require 'capistrano/rails/migrations' Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }
config/deploy.rb
deploy.rbでデプロイ先のディレクトリと、レポジトリなどの設定をします。
lock '3.1.0' set :application, <application_name> set :scm, :git set :repo_url, 'git@github.com:<git_user_name>/<repository>.git' set :deploy_to, '/var/www/<application_name>' set :branch, "master" set :format, :pretty set :log_level, :debug set :keep_releases, 5 namespace :deploy do desc "Restart application" task :restart do on roles(:app), in: :sequence, wait: 5 do execute :mkdir, '-p', release_path.join('tmp') excute :touch, release_path.join("tmp/restart.txt") end end after :finishing, "deploy:cleanup" end
config/deploy/production.rb
本番環境のサーバー接続の設定をします。
set :stage, :production role :app, %w{ec2-user@ec2-XX-XXX-XX-XX.region.compute.amazonaws.com} role :web, %w{ec2-user@ec2-XX-XXX-XX-XX.region.compute.amazonaws.com} role :db, %w{ec2-user@ec2-XX-XXX-XX-XX.region.compute.amazonaws.com} set :ssh_options, { keys: [File.expand_path('~/.ssh/<public_key>')], forward_agent: true }
デプロイ
cap production deploy