230 likes | 324 Views
Getting Started with Capistrano. a nd Ruby on Rails. Slides taken from james@launchany.com. Automated App Deployment. u sing ssh. Not for server configuration. Use Chef or Puppet for that. Installation. $ gem install capistrano Bundler: gem ‘ capistrano ’. Capify your application.
E N D
Getting Started with Capistrano and Ruby on Rails Slides taken from james@launchany.com
Automated App Deployment using ssh
Not for server configuration Use 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, :gitset :repository, “username@hostname:myapp.git”set :branch, “master”set :deploy_via, :remote_cache
Example Script (Passenger) namespace :deploy dodesc"Restarting mod_rails with restart.txt”task :restart, :roles => :app, :except => { :no_release => true } dorun "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 dotask :restart dorestart_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 migrations cap deploy:migrations
Rollback to the last version $ cap rollback
1. Create Deploy User $ sudouseradd deploy (helps scope gems, config, logs, etc.)
2. Cleanup Old Deploys $ cap cleanup (leaves last 5 deploys, removes the rest)
3. Disable sudo config/deploy.rb: :use_sudofalse
4. Colorize Capistrano $ gem install capistrano_colors In config/deploy.rb: require 'capistrano_colors'