Configurar capistrano en servidores compartidos

Esta es la configuración de capistrano para desplegar una aplicación en Site5 cuando tenemos el código en un repositorio subversion. Posiblemente puede utilizarse en otros servidores compartidos con ligeras modificaciones.

Para escribir este post he realizado un despliegue real de una aplicación, he consultado el tutorial que encontré en http://www.thebitguru.com/articles/9-Setting+up+Capistrano+on+Site5 y he utilizado el soporte de los técnicos de Site5 que me han ayudado durante el proceso con un problema de permisos que había en el servidor.

  1. (este punto es específico de Site5) Pedir que te cambien el shell por defecto de jailshell a bash.

  2. Configurar el entorno de desarrollo: desde el subdirectorio de tu aplicación rails ejecutar cap --apply-to . NOMBRE_APLICACION este comando generará:

    exists config
    create config/deploy.rb
    exists lib/tasks
    create lib/tasks/capistrano.rake

  3. Editar las opciones de configuración: en el archivo config/deploy.rb
    1. Indicar la URL del repositorio subversion:
      set :repository, "svn+ssh://USUARIO@DOMINIO/RUTA_DEL_REPOSITORIO"

    2. Poner las direcciones de cada rol de tu aplicación (web, app, db). Típicamente solo se utilizan :web y :app poniendoles el nombre del dominio (por ejemplo "bee.com.es" ).

    3. Descomentar la linea "deploy_set" indicándole la ruta correcta hacia el subdirectorio del servidor donde quieres que se instale la aplicación, por ejemplo:
      set :deploy_to, "/home/TU_USERNAME/apps/#{application}"

    4. Si el username del servidor es diferente del de la máquina desde donde usarás capistrano, descomenta la línea "user" y pon tu username:
      set :user, "TU_USERNAME"

    5. Añadir las siguientes tareas de capistrano al final del archivo:
      desc "Link in the production database.yml and fix permissions"
      task :after_update_code do
      run "find #{release_path}/public -type d -exec chmod 0755 {} \\;"
      run "find #{release_path}/public -type f -exec chmod 0644 {} \\;"
      run "chmod 0755 #{release_path}/public/dispatch.*"
      end

      desc "Restart the web server. Overrides the default task for Site5 use."
      task :restart, :roles => :app do
      run "chmod 755 #{current_path}/public/dispatch.fcgi"
      run "touch #{current_path}/public/dispatch.fcgi"
      end

  4. Configurar el servidor: Ejecutar desde la raiz de la aplicación el comando cap setup

  5. Cambiar la linea de public/.htaccess:
    RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
    por:
    RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
    Fíjate que solo es cambiar la extensión .cgi por .fcgi

  6. Listo! ahora para desplegar tu aplicación solo tienes que ejecutar desde la raiz de la aplicación el comando cap deploy


Posibles errores:
  • Si el protocolo de tu repositorio subversion es svn+ssh, es decir, utiliza ssh tienes que pedir que te perimitan realizar ssh desde el servidor porque por defecto lo tienen deshabilitado.

Etiquetas: , , ,


Recommend Me


XING
View Sergio Espeja's profile on LinkedIn