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 :
- Le site qui m'a donné la ligne de commande wget : https://swsblog.stanford.edu/blog/creating-static-copy-website
- Une autre option d'utilisation de wget http://stackoverflow.com/questions/66610/how-can-i-create-a-site-in-php…
- Un article de Lullabot, avec utilisation de httrack : https://www.lullabot.com/blog/article/sending-drupal-site-retirement
- Un article sur la conversion Wordpress : http://blog.lukhnos.org/post/12463734700/permanently-convert-wordpress-…
Les exemples
Les exemples de sites archivés sont accessibles via : http://archive.hebinweb.com