space, → | next slide |
← | previous slide |
d | debug mode |
## <ret> | go to slide # |
c | table of contents (vi) |
f | toggle footer |
r | reload slides |
z | toggle help (this) |
$ gem install capistrano
$ cd projects/beer_machine
$ capify .
[add] writing './Capfile'
[add] writing './config/deploy.rb'
[done] capified!
set :scm, "git"
set :repository,
"git@amberbit.com:beer_machine.git"
set :scm, "svn"
set :repository,
"svn+ssh://wojtek@svn.amberbit.com/beer_machine"
set :branch, "master"
set :git_enable_submodules, 1
set :deploy_via, :remote_cache
# or
set :deploy_via, :export
set :user, "beer_machine"
set :deploy_to, "/home/beer_machine/app"
set :keep_releases, 10
role :web, "beer-machine.com"
role :app, "beer-machine.com"
role :db, "beer-machine.com", :primary => true
role :web, "beer-machine.com"
role :app,
"app1.beer-machine.com", "app2.beer-machine.com"
role :db,
"db1.beer-machine.com", :primary => true
role :db,
"db2.beer-machine.com", "db3.beer-machine.com"
$ cap deploy:setup
/home/beer_machine/app
/home/beer_machine/app/releases
/home/beer_machine/app/shared
/home/beer_machine/app/shared/log
/home/beer_machine/app/shared/pids
/home/beer_machine/app/shared/system
$ cap deploy:check
$ cap deploy:update
$ cap deploy
set :scm, :git
set :repository, "git@amberbit.com:beer_machine.git"
set :branch, "v1.24.2"
set :deploy_via, :remote_cache
set :keep_releases, 10
set :application, "beer_machine"
set :stage, "production"
set :user, "#{application}-#{stage}"
set :group, "#{application}-#{stage}"
role :web, "amberbit.com"
role :app, "amberbit.com"
role :db, "amberbit.com", :primary => true
set :url, "beer-machine.amberbit.com"
set :deploy_to, "/home/#{user}/app"
namespace :deploy do
task :start do ; end
task :stop do ; end
desc "Restart passenger"
task :restart, :roles => :app do
file = File.join(current_path, 'tmp',
'restart.txt')
run "touch #{file}"
run "curl #{fetch :url} &"
end
end
namespace :config do
desc "Link shared configurations in release"
task :link_shared_configurations, :roles => :app do
files = %w[mongoid.yml application/config.yml]
files.each do |f|
from = "#{shared_path}/config/#{f}"
to = "#{release_path}/config/#{f}"
run "ln -nsf #{from} #{to}"
end
end
end
after "deploy:update_code",
"config:link_shared_configurations"
after "deploy:update_code",
"deploy:cleanup" # remove old releases