Getting Started with Capistrano

Post on 10-May-2015

1452 Views

Category:

Technology

11 Downloads

Preview:

Click to see full reader

DESCRIPTION

Learn how to use Capistrano to automate the deployment of your Ruby on Rails applications. Apply best practices and add-ons for customizing Capistrano.

Transcript

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

james@launchany.comhttp://launchany.com

top related