Deploying a Rails App to Multiple Servers using Capistrano - Best Practices Deploying a Rails App to Multiple Servers using Capistrano - Best Practices ruby-on-rails ruby-on-rails

Deploying a Rails App to Multiple Servers using Capistrano - Best Practices


It should all go in one file. Here's an example:

set :application, "my-app"set :repository,  "git@git.my-git-host.com:my-app.git"set :keep_releases, 5set :deploy_via, :remote_cacheset :git_enable_submodules, trueset :scm, :gitset :user, 'your-user-here'set :deploy_to, "/var/www/staging.mydomain.com"set :branch, 'staging'set :rails_env, 'staging'role :web, "machine1.mydomain.com", "machine2.mydomain.com", "machine3.mydomain.com"role :app, "machine1.mydomain.com", "machine2.mydomain.com", "machine3.mydomain.com"role :db, "db.mydomain.com"# ...

You'll see that only one db server was specified. This is the machine the migrations will be run from. If you only have one database (99.9% chance of the answer to that question being YES), then make sure to only provide one.


I had to use a slightly different syntax.

role :app, %w{s01.foobaz.com s02.foobaz.com}, user: 'deployer'role :web, %w{s01.foobaz.com s02.foobaz.com}, user: 'deployer'