Despliegue de Capistrano con Subversión

Despliegue de Capistrano

Capistrano is a tool used for automation of the application deployment process. Capistrano is mainly used for deploying rails apps. Changes made to the rails app can be easily transferred to the server using cap deploying. Capistrano can be configured with any version control system like SVN / GIT for deploying an app. Also, we can define application server type (mongrel, mod_rails / Fcgi) on which the app has be deployed in Capistrano. Here I’m going to discuss cap deploying an app using SVN with Mongrel cluster as the application server.

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.

user@hostname [~/railsapp]$ capify . [add] writing ‘./Capfile’ [add] writing ‘./config/deploy.rb’

usuario@nombredehost [~/railsapp]$ cat Capfile

load ‘deploy’ if respond_to?(:namespace) # cap2 differentiator Dir[‘vendor/plugins/*/recipes/*.rb’].each { |plugin| load(plugin) }

load ‘config/deploy’ # remove this line to skip loading any of the default tasks

usuario@nombre de host [~/railsapp]$ cat config/deploy.rb

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

PD: Como alternativa, podemos crear directamente archivo cap y desplegar.rb file under the rails app and load necessary data to it using ‘vi’ editor.

Capfile y Deploy.rb:

The Capfile contains all the tasks which has to be performed while cap deploying. All the functions (tasks) inside the Capfile can be defined using the keyword ‘task’. Group of functions is termed as namespace.

Archivo Cap de muestra:

load ‘deploy’ if respond_to?(:namespace) # cap2 differentiator

load ‘config/deploy’

espacio de nombres: implementar hacer

tarea :inicio, :roles => :aplicación hacer

run “cd #{current_path} && mongrel_rails cluster::configure -e production -p #{mongrel_port} -N #{mongrel_nodes} -c #{current_path} –user #{user} –group #{user}”

run “cd #{current_path} && mongrel_rails cluster::start”

run “rm -rf /home/#{user}/public_html; ln -s #{current_path}/public /home/#{user}/public_html”

run “mkdir -p #{deploy_to}/shared/config”

run “mv #{current_path}/config/mongrel_cluster.yml #{deploy_to}/shared/config/mongrel_cluster.yml”

run “ln -s #{deploy_to}/shared/config/mongrel_cluster.yml #{current_path}/config/mongrel_cluster.yml”

fin

tarea :reiniciar, :roles => :aplicación hacer

run “ln -s #{deploy_to}/shared/config/mongrel_cluster.yml #{current_path}/config/mongrel_cluster.yml”

run “cd #{current_path} && mongrel_rails cluster::restart”

run “cd #{current_path} && chmod 755 #{chmod755}”

fin

fin

The config/deploy.rb file contains all the variables which are used while cap deploying. Say, in the above Capfile we’re accessing different varibles like – mongrel_port, user, chmod755 etc the same should be first defined in the config/deploy.rb file then only Capistrano will execute the task properly.

Ejemplo de configuración/deploy.rb:

set :application, “railsapp”

set :domain, “hostname”

set :user, “user”

set :repository, “svn+ssh://#{user}@#{domain}/home/#{user}/svn/#{application}/trunk”

establecer: use_sudo, falso

establecer: grupo_escribible, falso

set :deploy_to, “/home/#{user}/apps/#{application}”

establecer :deploy_via, :checkout

set :chmod755, “app config db lib public vendor script script/* public/disp*”

set :mongrel_port, “4000”

set :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.

user@hostname [~]$ svn import temp/railsapp file:///home/user/svn/railsapp -m “message”

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

The command ‘cap deploy:setup’ will setup the initial directory structure required for the cap deployed app.

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

The command ‘cap deploy:cold’ will check out the rails app from the svn repository and place it under a directory inside – /home/user/apps/appname/releases. Later a sym link will be created from /home/user/apps/appname/releases/ /home/user/apps/appname/current. Also the document root will be pointed to the public directory of the current release as mentioned in the 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.

Suscríbete para recibir las últimas actualizaciones

Artículos Relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Spanish
English
English
Japanese
German
French
Spanish

envíanos whatsapp

Salir de la versión móvil