Despliegue de Capistrano
Capistrano es una herramienta utilizada para la automatización del proceso de implementación de aplicaciones. Capistrano se utiliza principalmente para implementar aplicaciones Rails. Los cambios realizados en la aplicación Rails se pueden transferir fácilmente al servidor mediante la implementación de límites. Capistrano se puede configurar con cualquier sistema de control de versiones como SVN/GIT para implementar una aplicación. Además, podemos definir el tipo de servidor de aplicaciones (mestizo, mod_rails / Fcgi) en el que se implementará la aplicación en Capistrano. Aquí voy a analizar la implementación de límites de una aplicación usando SVN con un clúster Mongrel como servidor de aplicaciones.
Instalación:Capistrano se puede instalar como una gema de rubí como se muestra a continuación: $ gema instalar capistrano
Configurar una aplicación Rails para usar capistrano:
Esto se puede hacer ejecutando el siguiente comando desde la aplicación Rails:
Capificación $.
El comando anterior creará un archivo cap y config/deploy.rb archivo.
usuario@nombredehost [~/railsapp]$ capify . [agregar] escribiendo './Capfile' [agregar] escribiendo './config/deploy.rb'
usuario@nombredehost [~/railsapp]$ cat Capfile
cargar 'implementar' si respond_to?(:namespace) # cap2 diferenciador Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| cargar (complemento) }
cargar 'config/deploy' # elimina esta línea para omitir la carga de cualquiera de las tareas predeterminadas
usuario@nombre de host [~/railsapp]$ cat config/deploy.rb
set :application, “establece aquí el nombre de tu aplicación” set :repository, “establece aquí la ubicación de tu repositorio”
# Si no está implementando en /u/apps/#{application} en los servidores # de destino (que es el valor predeterminado), puede especificar la ubicación real # a través de la variable :deploy_to: # set :deploy_to, “/var /www/#{aplicación}”
# Si no está utilizando Subversion para administrar su código fuente, especifique # su SCM a continuación: # set :scm, :subversion
rol :app, “tu servidor de aplicaciones aquí” rol :web, “tu servidor web aquí” rol :db, “tu servidor de base de datos aquí”, :primario => verdadero
PD: Como alternativa, podemos crear directamente archivo cap y desplegar.rb archivo en la aplicación Rails y cargue los datos necesarios usando el editor 'vi'.
Capfile y Deploy.rb:
El Capfile contiene todas las tareas que deben realizarse durante la implementación del límite. Todas las funciones (tareas) dentro del Capfile se pueden definir usando la palabra clave 'tarea'. El grupo de funciones se denomina espacio de nombres.
Archivo Cap de muestra:
cargar 'implementar' si respond_to?(:namespace) diferenciador # cap2
cargar 'config/implementar'
espacio de nombres: implementar hacer
tarea :inicio, :roles => :aplicación hacer
ejecute “cd #{current_path} && mongrel_rails cluster::configure -e production -p #{mongrel_port} -N #{mongrel_nodes} -c #{current_path} –user #{user} –group #{user}”
ejecute “cd #{current_path} && mongrel_rails cluster::start”
ejecute “rm -rf /home/#{usuario}/public_html; ln -s #{ruta_actual}/public /home/#{usuario}/public_html”
ejecute "mkdir -p #{deploy_to}/shared/config"
ejecute “mv #{current_path}/config/mongrel_cluster.yml #{deploy_to}/shared/config/mongrel_cluster.yml”
ejecute "ln -s #{deploy_to}/shared/config/mongrel_cluster.yml #{current_path}/config/mongrel_cluster.yml"
fin
tarea :reiniciar, :roles => :aplicación hacer
ejecute "ln -s #{deploy_to}/shared/config/mongrel_cluster.yml #{current_path}/config/mongrel_cluster.yml"
ejecute “cd #{current_path} && mongrel_rails cluster::restart”
ejecute “cd #{current_path} && chmod 755 #{chmod755}”
fin
fin
El archivo config/deploy.rb contiene todas las variables que se utilizan durante la implementación del límite. Digamos que en el Capfile anterior accedemos a diferentes variables como: mongrel_port, user, chmod755, etc., lo mismo debe definirse primero en el archivo config/deploy.rb y luego solo Capistrano ejecutará la tarea correctamente.
Ejemplo de configuración/deploy.rb:
establecer: aplicación, “railsapp”
establecer: dominio, “nombre de host”
establecer: usuario, “usuario”
establecer: repositorio, “svn+ssh://#{usuario}@#{dominio}/home/#{usuario}/svn/#{aplicación}/trunk”
establecer: use_sudo, falso
establecer: grupo_escribible, falso
establecer :deploy_to, “/home/#{usuario}/apps/#{aplicación}”
establecer :deploy_via, :checkout
establecer :chmod755, “script de script de proveedor público de configuración de aplicación db lib/* public/disp*”
establecer: mongrel_port, “4000”
establecer: mongrel_nodes, "2"
default_run_options[:pty] = verdadero
rol: aplicación, dominio
rol :web, dominio
rol :db, dominio, :primario => verdadero
Aquí debemos colocar el nombre de la aplicación, el nombre de dominio y el usuario ssh apropiados. La aplicación Rails debe importarse al repositorio svn antes de continuar con la implementación del límite. El repositorio SVN se puede configurar como se muestra a continuación.
usuario@nombredehost [~]$ mkdir svn
usuario@nombredehost [~]$ svnadmin crear ~/svn/railsapp
PD: asegúrese de proporcionar también el mismo nombre de la aplicación Rails al repositorio svn.
Una vez hecho esto, podemos importar la aplicación Rails al repositorio svn:
usuario@nombredehost [~]$ mkdir -p ~/temp/railsapp/tags ~/temp/railsapp/branches
usuario@nombre de host [~]$ cp -pR ~/railsapp ~/temp/railsapp/trunk
Aquí asegúrese de proporcionar la ruta completa a Railsapp (el directorio de su aplicación Rails) mientras crea el directorio troncal. Además, se debe proporcionar el usuario, la aplicación y el dominio correctos en el archivo trunk/config/deploy.rb.
La aplicación Rails se ubicará en el directorio troncal y ahora se puede importar al repositorio svn.
usuario@nombredehost [~]$ svn import temp/railsapp file:///home/user/svn/railsapp -m “mensaje”
La aplicación Rails importada al repositorio svn (por ejemplo, ubicada en el servidor) se puede descargar en la máquina local como se muestra a continuación:
usuario@máquina local [~]$ svn co svn+ssh://usuario@nombredehost/home/usuario/svn/railsapp/trunk nombre de carpeta
Contraseña: Contraseña SSH del usuario
Ahora podemos encontrar el archivo capfile editado y el archivo implementar.rb en la carpeta desprotegida. Después de esto, desde RAILS_ROOT de la aplicación de versión local ejecute el siguiente comando.
Implementación del límite $: configuración
Despliegue de tapa $: frío
El comando 'cap desplegar: configuración' configurará la estructura de directorio inicial requerida para la aplicación implementada con límite.
Decir,
/inicio/usuario/aplicaciones
/home/usuario/aplicaciones/nombre de aplicación
/home/usuario/aplicaciones/nombre de aplicación/lanzamientos
/home/usuario/aplicaciones/nombre de aplicación/compartido
El comando 'cap desplegar: frío' verificará la aplicación Rails desde el repositorio svn y la colocará en un directorio interno: /home/user/apps/appname/releases. Más tarde se creará un enlace simbólico desde /home/user/apps/appname/releases/ /home/user/apps/appname/current. Además, la raíz del documento apuntará al directorio público de la versión actual como se menciona en el Capfile.
El directorio de lanzamiento contiene las aplicaciones implementadas en el servidor y la carpeta de la aplicación se nombrará de acuerdo con la fecha y hora en que se implementó la aplicación Rails.
Decir,
usuario@nombre de host [~/apps/railsapp/releases]$ ls -al
total 24
drwxrwxr-x 6 usuario usuario 4096 28 de abril de 2009.
drwxrwxr-x 4 usuario usuario 4096 9 de julio de 2009 ..
drwxr-xr-x 16 usuario usuario 4096 15 de octubre de 2008 20081015183834
drwxr-xr-x 21 usuario usuario 4096 3 de febrero de 2009 20081015183941
drwxr-xr-x 8 usuario usuario 4096 28 de abril de 2009 20090428215604
drwxr-xr-x 8 usuario usuario 4096 28 de abril de 2009 20090428221701
Los directorios que son comunes en la aplicación Rails (por ejemplo, imágenes, archivos de configuración, archivos de registro) se colocan dentro del directorio compartido y están vinculados simbólicamente a la versión actual.
Referencias: http://www.capify.org/index.php/Capistrano http://www.hostingrails.com/Capistrano-2-x-Deploying-Your-Rails-Application-on-HostingRails-com
Colaborador: vinaya
Póngase en contacto con nosotros.