Fabric, htaccess et page de maintenance

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 !

Aymeric DERBOIS

J'ai 27 ans et je suis développeur. Je travail la plupart du temps sur des techno web, mais pas que. Étant à l'affût des nouveautés, j'adore découvrir tout et n'importe quoi dans l'informatique. Je suis amoureux de CakePHP et j'utilise au quotidien Django. Je suis très ouvert d'esprit :). J'aime bien utiliser AngularJS aussi de temps à autre pour faire du front. Au quotidien j'utilise Fedora/Ubuntu pour le desktop et CentOS pour mes serveurs. Par ailleurs je maîtrise le C/C++/Python/PHP/...

More Posts - Website

Follow Me:
Twitter

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.