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.