Archivage de sites Wordpress / Drupal

J'ai récemment eu besoin d'archiver des sites initialement créés avec les CMS Drupal et Wordpress, de clients HebInWeb ayant arrêté leur activité (et donc également leur site).

Le nom de domaine n'a pas été renouvelé, et a été détruit.
 
Plutôt que de supprimer complètement les sites, j'ai décidé de les archiver, mais en utilisant un site 100% statique en html/css/js, plutôt que de rester sur les CMS initiaux.

Ceci a plusieurs avantages à mes yeux :

  • sites plus rapides (nginx est assez doué pour ça)
  • arrêt des  mises à jour à faire sur les CMS
  • suppression de PHP = moins de ressources mémoire consommée
  • suppression de la base de données = moins de ressources
  • pas de sauvegarde (j'ai une copie de l'archive en local sur mon PC et sur disque externe)


Sachant qu'on est bien dans un mode "archive", qui sera probablement très peu visité, je me voyais mal "gâcher" des ressources pour cela.

Après quelques recherches, je suis tombé sur un site : https://swsblog.stanford.edu/blog/creating-static-copy-website qui m'a orienté vers la création d'un script reposant sur wget afin de faire un miroir statique.

#!/bin/sh
#
echo -n "Destination directory : "
read DEST

echo -n "Site URL : "
read URL

wget -P $DEST -mpck --user-agent="" -e robots=off --wait 1 -E $URL

Les options utilisées ici sont :

  • -P : chemin (Path) complet pour sauvegarder le site
  • -m : mode miroir
  • -p : télécharge tous les éléments nécessaires (css, js, images)
  • -c : continue le téléchargement en cas d'erreur
  • -k : convertit les liens absolus en relatifs
  • --user-agent : ignore le user-agent
  • -e : exécute la commande
  • --wait 1 : attente d'une seconde entre chaque requête (optionnel)
  • -E : renomme les fichiers avec une extension .html
  • $URL : URL du site à convertir


La copie d'un site s'effectue de manière assez simple. On saisit le répertoire de destination, puis l'URL, et on attend que wget fasse le boulot...
Le paramètre "wait" ralentit un peu, si on s'en passe cela ne prend que quelques secondes.

Sur le site Wordpress, j'ai juste retouché la page de contact, qui s'est retrouvée avec une notation de type [contact xxx].

Pour le site sous Drupal, j'ai commencé par désactiver les modules "interactifs", tels que comment, contact, etc.

S'agissant d'une archive, j'ai également désactivé les modules tels que XMLsitemap (qui de toute manière ne renverra plus rien, car le site sera en HTML statique)


Autres options

Avec wget

Une alternative (http://stackoverflow.com/questions/66610/how-can-i-create-a-site-in-php…) utilise la commande suivante :

wget -k -K -E -r -l 10 -p -N -F -nH $URL


Wordpress

Il semble exister quelques plugins qui réalisent cette conversion, mais je n'ai pas approfondi (voir dans les références ci-après)


Drupal

Il existe un module, Static, assez récent, qui effectue cette conversion

Références

Quelques références sur le sujet :

Catégorie