Déploiement de Capistrano avec Subversion

Déploiement 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.

Installation:

Capistrano peut être installé comme une gemme rubis comme indiqué ci-dessous : Gemme $ installer Capistrano

Configuration d'une application Rails pour utiliser Capistrano :

Cela peut être fait en exécutant la commande suivante depuis l'application Rails :

$ capifie .

La commande ci-dessus créera un Fichier Cap et config/deploy.rb déposer.

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

utilisateur@nom d'hôte [~/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

utilisateur@nom d'hôte [~/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

PS : Comme alternative, on peut créer directement Fichier Cap et déployer.rb file under the rails app and load necessary data to it using ‘vi’ editor.

Capfile et 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.

Exemple de fichier Cap :

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

load ‘config/deploy’

espace de noms : déployer

tâche :start, :roles => :app do

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

tâche :restart, :roles => :app do

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.

Exemple de configuration/deploy.rb :

set :application, “railsapp”

set :domain, “hostname”

set :user, “user”

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

set :use_sudo, faux

set :group_writable, faux

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

définir : 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] = vrai

rôle : application, domaine

rôle : web, domaine

rôle :db, domaine, :primary => true

Ici, nous devons placer le nom de l'application, le nom de domaine et l'utilisateur ssh appropriés. L'application Rails doit être importée dans le référentiel SVN avant de procéder au déploiement avec Cap. Le référentiel SVN peut être configuré comme indiqué ci-dessous.

utilisateur @ nom d'hôte [~] $ mkdir svn

utilisateur @ nom d'hôte [~] $ svnadmin créer ~/svn/railsapp

PS : assurez-vous également de fournir le même nom de l'application Rails au référentiel SVN.

Une fois cela fait, nous pouvons importer l'application Rails dans le référentiel SVN :

utilisateur@nom d'hôte [~]$ mkdir -p ~/temp/railsapp/tags ~/temp/railsapp/branches

utilisateur@nom d'hôte [~]$ cp -pR ~/railsapp ~/temp/railsapp/trunk

Assurez-vous ici de fournir le chemin complet vers railsapp (le répertoire de votre application Rails) lors de la création du répertoire trunk. De plus, l'utilisateur, l'application et le domaine corrects doivent être indiqués dans le fichier trunk/config/deploy.rb.

L'application Rails sera située dans le répertoire trunk et pourra maintenant être importée dans le référentiel svn.

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

L'application Rails importée dans le référentiel SVN (par exemple située sur le serveur) peut être extraite sur la machine locale comme indiqué ci-dessous :

user@localmachine [~]$ svn co svn+ssh://user@hostname/home/user/svn/railsapp/trunk nom du dossier

Mot de passe : mot de passe SSH de l'utilisateur

Nous pouvons maintenant trouver le fichier capfile modifié et le fichier déployer.rb dans le dossier extrait. Après cela, à partir du RAILS_ROOT de l'application version locale, exécutez la commande suivante.

Déploiement du plafond $ : configuration

Déploiement du plafond $ : à froid

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

Dire,

/accueil/utilisateur/applications

/home/user/apps/nom de l'application

/home/user/apps/appname/releases

/home/user/apps/appname/shared

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.

Le répertoire de version contient les applications déployées sur le serveur et le dossier d'application sera nommé en fonction de la date et de l'heure auxquelles l'application Rails a été déployée.

Dire,

utilisateur@nom d'hôte [~/apps/railsapp/releases]$ ls -al

total 24

drwxrwxr-x 6 utilisateur utilisateur 4096 28 avril 2009 .

drwxrwxr-x 4 utilisateur utilisateur 4096 9 juillet 2009 ..

drwxr-xr-x 16 utilisateur utilisateur 4096 15 octobre 2008 20081015183834

drwxr-xr-x 21 utilisateur utilisateur 4096 3 février 2009 20081015183941

drwxr-xr-x 8 utilisateur utilisateur 4096 28 avril 2009 20090428215604

drwxr-xr-x 8 utilisateur utilisateur 4096 28 avril 2009 20090428221701

Les répertoires communs dans l'application Rails (par exemple, les images, les fichiers de configuration, les fichiers journaux) sont placés dans le répertoire partagé et liés symboliquement à la version actuelle.

Les références: http://www.capify.org/index.php/Capistrano http://www.hostingrails.com/Capistrano-2-x-Deploying-Your-Rails-Application-on-HostingRails-com

Contributeur : Vinayan

Prenez contact avec nous.

Abonnez-vous pour les dernières mises à jour

Articles Similaires

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

French
English
English
Japanese
German
French
Spanish

WhatsApp nous

Quitter la version mobile