Déploiement de Capistrano avec Subversion

Déploiement Capistrano

Capistrano est un outil utilisé pour automatiser le processus de déploiement d'applications. Capistrano est principalement utilisé pour déployer des applications Rails. Les modifications apportées à l'application Rails peuvent être facilement transférées vers le serveur à l'aide du déploiement de plafond. Capistrano peut être configuré avec n'importe quel système de contrôle de version comme SVN/GIT pour déployer une application. Aussi, nous pouvons définir le type de serveur d'applications (mongrel, mod_rails / Fcgi) sur lequel l'application a été déployée dans Capistrano. Ici, je vais discuter du déploiement d'une application utilisant SVN avec le cluster Mongrel comme serveur d'applications.

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.

utilisateur@nom d'hôte [~/railsapp]$ capify . [ajouter] écrire './Capfile' [ajouter] écrire './config/deploy.rb'

utilisateur@nom d'hôte [~/railsapp]$ cat Capfile

charger 'deploy' si répond_to?(:namespace) # cap2 différenciateur Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| charger(plugin) }

charger 'config/deploy' # supprimer cette ligne pour ignorer le chargement des tâches par défaut

utilisateur@nom d'hôte [~/railsapp]$ cat config/deploy.rb

set :application, "définissez le nom de votre application ici" set :repository, "définissez l'emplacement de votre référentiel ici"

# Si vous ne déployez pas sur /u/apps/#{application} sur les serveurs # cibles (ce qui est la valeur par défaut), vous pouvez spécifier l'emplacement réel # via la variable :deploy_to : # set :deploy_to, "/var /www/#{application}”

# Si vous n'utilisez pas Subversion pour gérer votre code source, spécifiez # votre SCM ci-dessous : # set :scm, :subversion

rôle :app, « votre serveur d'applications ici » rôle :web, « votre serveur Web ici » rôle :db, « votre serveur de base de données ici », :primary => true

PS : Comme alternative, on peut créer directement Fichier Cap et déployer.rb fichier sous l'application Rails et chargez-y les données nécessaires à l'aide de l'éditeur 'vi'.

Capfile et Deploy.rb :

Le Capfile contient toutes les tâches qui doivent être effectuées lors du déploiement du cap. Toutes les fonctions (tâches) à l'intérieur du Capfile peuvent être définies à l'aide du mot-clé « tâche ». Le groupe de fonctions est appelé espace de noms.

Exemple de fichier Cap :

charger 'deploy' si respons_to?(:namespace) différenciateur # cap2

charger 'config/deploy'

espace de noms : déployer

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

exécutez "cd #{current_path} && mongrel_rails cluster::configure -e production -p #{mongrel_port} -N #{mongrel_nodes} -c #{current_path} –user #{user} –group #{user}"

exécutez « cd #{current_path} && mongrel_rails cluster :: start »

exécutez « rm -rf /home/#{user}/public_html ; ln -s #{chemin_actuel}/public /home/#{user}/public_html"

exécutez « mkdir -p #{deploy_to}/shared/config »

exécutez « mv #{current_path}/config/mongrel_cluster.yml #{deploy_to}/shared/config/mongrel_cluster.yml »

exécutez « ln -s #{deploy_to}/shared/config/mongrel_cluster.yml #{current_path}/config/mongrel_cluster.yml »

fin

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

exécutez « ln -s #{deploy_to}/shared/config/mongrel_cluster.yml #{current_path}/config/mongrel_cluster.yml »

exécutez « cd #{current_path} && mongrel_rails cluster ::restart »

exécutez "cd #{current_path} && chmod 755 #{chmod755}"

fin

fin

Le fichier config/deploy.rb contient toutes les variables utilisées lors du déploiement du plafond. Disons que dans le fichier Capfile ci-dessus, nous accédons à différentes variables telles que – mongrel_port, user, chmod755, etc., la même chose doit d'abord être définie dans le fichier config/deploy.rb, puis seul Capistrano exécutera la tâche correctement.

Exemple de configuration/deploy.rb :

ensemble :application, "railsapp"

set :domaine, "nom d'hôte"

set :utilisateur, "utilisateur"

set : dépôt, "svn+ssh://#{user}@#{domain}/home/#{user}/svn/#{application}/trunk"

set :use_sudo, faux

set :group_writable, faux

définir : deploy_to, "/home/#{user}/apps/#{application}"

définir : deploy_via, : checkout

set :chmod755, "app config db lib public script script/* public/disp*"

définir :mongrel_port, "4000"

définir : 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.

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

La commande « cap deploy:setup » configurera la structure de répertoires initiale requise pour l'application déployée par cap.

Dire,

/accueil/utilisateur/applications

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

/home/user/apps/appname/releases

/home/user/apps/appname/shared

La commande 'cap déployer:cold' extraira l'application rails du référentiel svn et la placera dans un répertoire à l'intérieur de – /home/user/apps/appname/releases. Plus tard, un lien symbolique sera créé à partir de /home/user/apps/appname/releases/ /home/user/apps/appname/current. De plus, la racine du document pointera vers le répertoire public de la version actuelle, comme mentionné dans le 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 *

fr_FRFrench