Una introducción a Capistrano

Capistrano es una aplicación open-source escrita en Ruby para automatizar tareas en uno o varios servidores remotos via SSH. Es frecuentemente usado por administradores y desarrolladores web para mover aplicaciones a los servidores de producción de forma muy sencilla, por lo que es una de las herramientas que no puede faltar si trabajas con aplicaciones web no triviales.

Capistrano

Instalando Capistrano

Como ya hemos dicho, Capistrano está implementado en Ruby, por lo que uno de los requisitos para utilizarlo es tener instalado el intérprete de este lenguage de programación, así como el gestor de paquetes rubygems. También (sobra decirlo), es necesario que tu proyecto haga uso de un SCM como Git, Subversion o Mercurial.

sudo apt-get install rubygems
sudo gem install capistrano

Una vez tengas todo instalado, debes correr el comando capify para que tu proyecto quede configurado para usar Capistrano.

capify .

Este comando creará varios archivos, entre ellos ./config/deploy.rb. Vamos a editar este archivo, donde incluiremos la configuración del servidor remoto y la de nuestro sistema de control de versiones.

A continuación, un ejemplo del archivo de configuración que usamos en The Next Web:

role :web, 'server1.thenextweb.com', 'server2.thenextweb.com'

set :application, 'thenextweb'

# SSH options
ssh_options[:username] = 'root'
ssh_options[:forward_agent] = true

# SCM options
set :scm, :git
set :scm_verbose, true
set :repository, 'git@localhost:thenextweb.git'
set :branch, 'master'
set :deploy_via, :remote_cache
set :use_sudo, false

# Other settings
set :deploy_to, "/var/www/#{application}/"
set :keep_releases, 5

¿Cómo poner código en producción?

Una vez tu configuración esté lista, debes inicializar los servidores remotos con el comando:

cap deploy:setup

Este comando se conectará por SSH a dichos servidores y creará la estructura de directorios necesaria para el funcionamiento interno de Capistrano, a partir de la ruta indicada en deploy_to. Una vez hecho esto, y si no has recibido ningún error, puedes hacer tu primer deploy de la siguiente manera:

cap deploy

¿Fácil, verdad? :)

Otros casos de uso interesantes de Capistrano es el de deshacer un deploy:

deploy:rollback

O ejecutar un único comando en el servidor remoto:

cap invoke

Usos avanzados

Básicamente Capistrano permite correr cualquier comando en el servidor remoto, así que el límite de posibilidades está en tu imaginación. Por ejemplo, es posible:

  • Enviar un email al resto del equipo tras poner código en producción:
  • Realizar tareas de mantenimiento antes de actualizar el código. Por ejemplo, correr un script que actualice la estructura de la base de datos.
  • Instalar nuevos paquetes o cambiar configuraciones en multiples servidores al mismo tiempo.

Puedes encontrar mucha más información en la web oficial de Capistrano, en GitHub:
https://github.com/capistrano/capistrano/wiki/
También en GitHub hay un manual muy completo con explicaciones detalladas.
https://github.com/leehambley/capistrano-handbook/blob/master/index.markdown

Lee ahora: TNW Social Count para WordPress »