Deployment has always been a uniquely stressful period in the web development cycle. On most projects, it requires an elaborate protocol of copying files, restarting web servers, shutting down databases, possibly migrating data, restarting databases, and possibly rebooting machines. (Crossing your fingers is optional.) Often the process is mediated by a checklist, or by the memory of the developer who has been with the project the longest. It's time-consuming and error prone at exactly the time you most want to move quickly and accurately. If you are in a cycle where you are deploying frequently, then the time and effort quickly becomes a drag on the development process in general.
Capistrano aims to change all that by automating deployment tasks in much the same way that Rake automates build tasks. Capistrano assumes a particular structure for your development and deployment environments, but within that structure it's amazingly helpful at managing the copy and restart dance. It's especially helpful as your deployment moves to multiple servers — Capistrano enables you to make the same changes on all your servers with a single command.
Capistrano is distributed as a Rubygem, so naturally, you install it as follows:
$ sudo gem install capistrano
As of this writing, the current version is 2.1.0.
Capistrano requires you to have done some design and preparation of your deployment environment before you can use it. In particular, you ...