Este es un artículo que forma parte de un grupo de artículos para aprender a configurar un servidor web que te pueden interesar.
Vamos a por el siguiente paso, el que nos ayuda a «deployar»: Capistrano
Antes de nada, creamos la app Rails en nuestro proyecto:
rails project1 -c
La opción «-c», añade todos los ficheros a subversion (pero sin hacer commit)
Ok, ahora, vamos a decirle a Subversion que ignore algunos ficheros que no queremos que gestione en las versiones:
cd project1 svn commit -m "Initial commit of project" svn propset svn:ignore "*" log/ svn propset svn:ignore "*" tmp/ svn commit -m "added ignore to tmp and log"
Vale, tenemos el Proyecto preparado, ahora, instala Capistrano:
sudo gem install capistrano
Para ver la versión de Capistrano instalada:
cap -V Capistrano v2.1.0
Lo primero que hay que hacer es decirle al proyecto que use Capistrano, ¿o a Capistrano que gestione el proyecto?, es lo mismo, «capifiar» el proyecto: (desde el root de tu aplicación)
capify .
Esto genera dos archivos en nuestro proyecto, que tenemos que añadir a Subversion:
svn status ? Capfile ? config/deploy.rb svn add Capfile A Capfile svn add config/deploy.rb A config/deploy.rb svn commit -m "yay, I capified it..."
Vamos a preparar el archivo de configuración de capistrano «config/deploy.rb»
Por defecto es más o menos así:
set :application, "set your application name here" set :repository, "set your repository location here" # If you aren't deploying to /u/apps/#{application} on the target # servers (which is the default), you can specify the actual location # via the :deploy_to variable: # set :deploy_to, "/var/www/#{application}" # If you aren't using Subversion to manage your source code, specify # your SCM below: # set :scm, :subversion role :app, "your app-server here" role :web, "your web-server here" role :db, "your db-server here", :primary => true
Tenemos que rellenarlo con nuestros datos de servidor:
set :application, "domain.com" set :user, "demo" set :repository, "svn+project1ssh://123.45.67.890/home/demo/repository/project1" set :port, 30000 set :deploy_to, "/home/demo/public_html/#{application}" set :location, "domain2.com" role :app, location role :web, location role :db, location, :primary => true
Suficiente, vamos a probarlo, cruza los dedos y escribe:
cap deploy:setup
Si todo ha ido bien, tendremos una carpeta nueva en nuestro public_html del servidor, preparada para servir. Dentro de esa carpeta hay dos subcarpetas; «releases» donde se guardara la versión de producción (y las copias de seguridad de cada deploy) y «shared» donde se guardan los ficheros que no cambian (logs, pids y informaciones de systema).
Ya que nuestro repositorio está en el mismo servidor que el Apache, vamos a poner las cosas un poco más simples: (cambia esto en el deploy.rb)
set :deploy_via, :copy
Y si quieres que el usuario encargado de parar y reiniciar los Mongrels sea diferente:
set :runner, user
Pero todavía nos queda explicarle como iniciar los Mongrel: (desde nuestro PC)
touch script/spin svn propset svn:executable on script/spin
En el fichero creado ay que escribir lo siguiente:
/home/demo/public_html/domain.com/current/script/process/spawner -p 8000 -i 2 -e production
Y subirlo:
svn add script/spin svn commit -m "added script/spin"
Todo preparado para el primer deploy:
cap deploy:cold
Jur jur… Si todo va bien, este comando ha hecho lo siguiente:
- Descarga la última versión del repositorio
- La comprime en un archivo temporal
- La sube al servidor
- La descomprime
- Copia el código donde debe y crea algunos enlaces simbólicos y demás. (lo prepara)
- Inicia los Mongrels definidos en «script/spin»
Recuerda hacer un vhost, que tenga las siguientes URLs:
access_log --> /home/demo/public_html/domain.com/shared/log/access.log; error_log --> /home/demo/public_html/domain.com/shared/log/error.log; root --> /home/demo/public_html/domain.com/current/public/
Capítulo anterior: Capitulo VI: Gestión de versiones con Subversion
Siguiente capítulo: Capitulo VIII: Resumen y listado de artículos de ayuda
Deja una respuesta