La mise à jour d’un site web est toujours un moment critique. Même si cela se passe rapidement et sans problème quasiment tout le temps, parfois …
Une jolie page de maintenance !
La solution que j’ai retenu est très simple, avec un fichier .htaccess on vérifie la présence d’un fichier pour savoir si le site est en maintenance.
On effectue une redirection vers une page statique que l’on met en erreur 503 « Service Unavailable », utilisée pour indiquer une maintenance.
RewriteEngine On # Si ce fichier existe, on va mettre en place la maintenance RewriteCond /tmp/my-site.com.maintenance -f # Sauf si l'ip du visiteur est la suivante RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$ # Pour éviter une redirection en boucle RewriteCond %{REQUEST_URI} !^/maintenance.html # On fait la redirection en erreur 503 RewriteRule ^(.+) /maintenance.html [L,R=503] # On donne à la page le code HTTP 503 ErrorDocument 503 /maintenance.html
L’avantage de cette configuration, elle ne dépends que de Apache, et pas du langage (php, python, …)
Automatisons tout cela !
Avec Frabric, rien de plus simple :
from fabric.api import * env.hosts.extend(['user@my-site.com']) def maintenance(set): if set == 'on': run('touch /tmp/my-site.com.maintenance') else: run('rm -f /tmp/my-site.com.maintenance')
Et les commandes sont … :
$ fab maintenance:on # Mise en maintenance $ fab maintenance:off # Remise en ligne
Et voilà, maintenant, faite nous de belle page de maintenance !