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.