Getting Started with Capistrano and Ruby on Rails
May 10, 2015
Getting Started with Capistrano
and Ruby on Rails
Automated App Deployment
using ssh
Not for server configurationUse Chef or Puppet for that
Installation$ gem install capistrano
Bundler:gem ‘capistrano’
Capify your application
$ capify .
Rails Directory Structure/ |- public/ |- config/ - deploy.rb <--- Capistrano |- application/
Example Script
set :application, "set your application name here”
role :app, "your app-server here”role :web, "your web-server here”role :db, "your db-server here", :primary => true
Example Script (git)
set :scm, :git set :repository, “username@hostname:myapp.git”set :branch, “master”set :deploy_via, :remote_cache
Example Script (Passenger)
namespace :deploy do desc "Restarting mod_rails with restart.txt” task :restart, :roles => :app, :except => { :no_release => true } do run "touch #{current_path}/tmp/restart.txt” end
[:start, :stop].each do |t| desc "#{t} task is a no-op with mod_rails” task t, :roles => :app do ; end end
end
Example Script (mongrel)
require 'mongrel_cluster/recipes'
namespace :deploy do task :restart do restart_mongrel_cluster endend
First-time server setup
$ cap deploy:setup
:deploy_to/ |- releases/ - 201205041112 - 201206110904 |- current/ --> 201206110904
Deploy the app$ cap deploy
Deploy and run migrationscap deploy:migrations
Rollback to the last version$ cap rollback
Capistrano Best Practices
1. Create Deploy User$ sudo useradd deploy
(helps scope gems, config, logs, etc.)
2. Cleanup Old Deploys
$ cap cleanup
(leaves last 5 deploys, removes the rest)
3. Multi-Stage Deploy$ gem install capistrano-ext
Bundler:gem ‘capistrano-ext’
config/deploy.rb:set :stages, %w(production staging) set :default_stage, "staging” require 'capistrano/ext/multistage’
Add users for each stage:$ sudo useradd staging$ sudo useradd production
4. Disable sudoconfig/deploy.rb:
:use_sudo false
5. Colorize Capistrano$ gem install capistrano_colors
In config/deploy.rb:require 'capistrano_colors'
Thank you@launchany
[email protected]://launchany.com