Pages de maintenance personnalisées avec Capistrano
26 avril 2007 par Marc Charlet
d'après l'article Custom Maintenance Pages sur le blog de Mike Clarke.
Capistrano permet de facilement générer et afficher une page de maintenance lorsque vous devez intervenir sur votre site. Pour faire cela, capistrano met à disposition les commandes disable_web pour afficher la page de maintenance et enable_web pour revenir à la normale.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\Marc\workspace\monapplic>cap disable_web
C:\Documents and Settings\Marc\workspace\monapplic>
C:\Documents and Settings\Marc\workspace\monapplic>cap enable_web
C:\Documents and Settings\Marc\workspace\monapplic>
La page affichée par défaut est, malheureusement pour nous, en anglais.
Dans son article, Mike Clarke nous donne une méthode pour remédier à cette situation en nous donnant le moyen d'afficher une page de maintenance personnalisée.
- pour que la page de maintenance s'affiche, il faut, bien entendu, que le site soit préparé à afficher la page si elle est présente. Pour ce faire il suffit de modifier le fichier .htaccess du répertoire public1 de la façon suivante:
- juste après RewriteEngine On, ajouter
-
# Display maintenance.html if file exists (cap disable_web)
-
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
-
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
-
RewriteRule ^.*$ /system/maintenance.html [L]
- nous devons également modifier notre fichier /config/deploy.rb en conséquence2 et ajouter une redéfinition de la tâche disable_web à la fin du fichier
-
desc "Redefine disable_web task for custom maintenance page"
-
task :disable_web, :roles => :web do
-
on_rollback { delete "#{shared_path}/system/maintenance.html" }
-
-
maintenance = render("./app/views/layouts/maintenance.rhtml",
-
:deadline => ENV['UNTIL'],
-
:reason => ENV['REASON'])
-
-
put maintenance, "#{shared_path}/system/maintenance.html",
-
:mode => 0644
-
end
- pour traduire et personnaliser la page de maintenance, il nous suffit de modifier le fichier maintenance.rhtml que nous avons placé dans le répertoire /app/views/layouts, comme suggéré par Mike Clarke.
-
-
<div class="outer">
-
<div class="DialogBody" style="text-align: center;">
-
<div style="text-align: center; width: 200px; margin: 0 auto;">
-
<p style="color: red; font-size: 16px; line-height: 20px;">
-
Le système est arrêté pour <%= reason ? reason : "maintenance" %>
-
depuis <%= Time.now.strftime("%H:%M %Z") %>.
-
</p>
-
<p style="color: #666;">
-
Nous serons de retour <%= deadline ? " #{deadline}" : "dès que possible" %>.
-
</p>
-
</div
-
</div>
-
</div>
-
-
</body>
- lançons la commande disable_web pour constater que c'est notre page personnalisée qui s'affiche.3
C:\Documents and Settings\Marc\workspace\monapplic>cap disable_web
* executing task disable_web
servers: ["monapplic.toutenruby.com"]
* uploading /home/Marc/monapplic.toutenruby.com/shared/system/maintenance.html
** uploading data to monapplic.toutenruby.com:/home/nnoel/monapplic.toutenruby.com/shared/system/maintenance.html
* done uploading data to monapplic.toutenruby.com:/home/nnoel/monapplic.toutenruby.com/shared/system/maintenance.html
upload finished
- si nous voulons envoyer des variables personnalisées, il suffit de les déclarer dans la fenêtre de commande.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\Marc\workspace\monapplic>set UNTIL=dans 10 minutes
C:\Documents and Settings\Marc\workspace\monapplic>
C:\Documents and Settings\Marc\workspace\monapplic>set REASON=cause d'upgrade de Wordpress
C:\Documents and Settings\Marc\workspace\monapplic>
- pour 'effacer' les variables environnement, il suffit de les redéclarer 'vides'
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\Marc\workspace\monapplic>set UNTIL=
C:\Documents and Settings\Marc\workspace\monapplic>
C:\Documents and Settings\Marc\workspace\monapplic>set REASON=
C:\Documents and Settings\Marc\workspace\monapplic>
- lorsque la situation redevient 'normale', il suffit de réactiver le site via la commande enable_web
C:\Documents and Settings\Marc\workspace\monapplic>cap enable_web
* executing task enable_web
* executing "rm -f /home/nnoel/monapplic.toutenruby.com/shared/system/maintenance.html"
servers: ["monapplic.toutenruby.com"]
[monapplic.toutenruby.com] executing command
command finished
C:\Documents and Settings\Marc\workspace\monapplic>
Tags: capistrano, deploiement, deploy.rb, guide-débutant, rails, RoR, truc
