Upload
launchany
View
1.461
Download
11
Tags:
Embed Size (px)
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.
Citation preview
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