WordPress Upgrade Script – mise à jour automatique

Ces dernières années, j’ai cherché à automatiser au maximum la gestion de l’ensemble des sites hébergés en WordPress. J’avais notamment une méthode de mise à jour à partir de différents scripts en Bash présentés dans un article précédent.

Toutefois, cette méthode imposait de dupliquer et de modifier certains scripts lors de l’ajout de nouveaux sites hébergés. J’ai donc décidé de réaliser un script en python qui utilise un fichier de configuration des différents sites. L’ajout d’un nouveau site ne représente donc que peu de travail à savoir l’ajout d’une nouvelle section dans le fichier de configuration.

Wordpress Upgrade Script
WordPress Upgrade Script

WP Upgrade Script – un script python pour automatiser la mise à jour de sites WordPress

Fonctions du script python

Le script permet de réaliser les opérations suivantes :

  • Réaliser des sauvegardes des sites (fichiers et base de données)
  • Restaurer des sauvegardes en choisissant la version de la sauvegarde à restaurer parmi toutes les sauvegardes réalisées
  • Vider le dossier de sauvegardes
  • Télécharger la dernière version de WordPress
  • Comparer les versions de WordPress des sites configurés à la dernière version téléchargée de WordPress
  • Mettre à jour les sites tagués d’un fichier de configuration, ou tous les sites du fichier de configuration
  • Utiliser plusieurs fichiers de configuration (par exemple sites en préproduction, sites en production)
  • Réaliser les opérations sur une partie des sites du fichier de configuration ou sur leur intégralité

Mise en garde

L’utilisation de ce script python se fait à vos risques et périls. Je l’utilise pour ma part avec beaucoup de bonheur. Si vous avez des problèmes, n’hésitez pas à m’en faire part. Quelques précautions doivent être prises pour utiliser ce script.

  1. L’installation doit être conforme à l’arborescence dossier_racine_du_site/wordpress/. Les fichiers présents à la racine (index.php, favicon.ico, .htaccess, robots.txt etc.) ne sont par modifiés par le script. Si l’arborescence de vos sites est différente, il est possible qu’il faille adapter le script. Pour rappel, je donne une méthode d’installation de WordPress dans cet article : https://w3.nonsenz.org/2017/08/installation-rapide-de-wordpress/
  2. Le script est en python 3. Je pense cependant qu’il fonctionnerait très bien en python 2, seule la première ligne du script est dans ce cas à modifier.

Prérequis

Le prérequis est basique. Le répertoire d’installation doit disposer de suffisamment d’espace libre pour réaliser les sauvegardes et récupérer la dernière version de WordPress. Les sauvegardes ne sont pas compressées puisque l’outil ne se substitue pas à un logiciel de sauvegarde. Ici, les sauvegardes ne sont réalisées que pour la durée des mises mises à jour et des tests.

Python 3 et deux modules doivent être installés.

$ sudo apt-get install python3 python3-configobj python3-wget

Installation

Les fichiers sont à télécharger sur Github :

https://github.com/NonSenZ21/wordpress-upgrade-script

 

Rendre le script majWP.py exécutable :

$ cd wp-upgrade-script
$ chmod 755 majWP.py

Personnalisation du fichier de configuration

Le fichier de configuration par défaut est sites.conf. Sans paramètre particulier, le script prendra ce fichier par défaut mais il est possible de créer autant de fichiers de configuration qu’on le souhaite et de spécifier le fichier à utiliser avec l’option -f.

Les paramètres du fichier de configuration sont assez triviaux à l’exception du paramètre update = 0 ou update = 1. Ce paramètre permet de spécifier les sites qui seront prises en compte lorsqu’on n’utilise pas l’option -a.

Utilisation en 3 minutes

Lancer une première fois le script sans option pour créer les répertoires nécessaires et vérifier l’espace disponible.

$ ./majWP.py

Vérifier que vous avez bien l’espace suffisant pour réaliser les sauvegardes des sites (fichiers et dumps SQL).
Vous pouvez ensuite lancer la sauvegarde de tous les sites et le téléchargement de la dernière version de wordpress avec la commande suivante.

$ ./majWP.py -abd

Lorsque vous réaliserez une nouvelle mise à jour dans quelques semaines, vous pourrez supprimer les anciennes sauvegardes dans la foulée en ajoutant l’option -c :

$ ./majWP.py -abcd

Réalisez l’upgrade (la mise à jour) de tous les sites ayant le paramètre update = 1 dans le fichier de configuration sites.conf.

$ ./majWP.py -u

Suivez les consignes. Réalisez les tests. Une fois que vous aurez constaté que tout fonctionne correctement, vous pourrez supprimer les dossiers .old contenant les anciens sites et éventuellement vos sauvegardes.

$ ./majWP.py -oc

Documentation

-h –help

L’option -h permet d’afficher les différentes options disponibles.

-f –file=

L’option -f permet de spécifier le fichier de configuration des sites à utiliser. Par exemple ./majWP.py -f preprod.conf -au pour réaliser la mise à jour de l’ensemble des sites décrits dans le fichier preprod.conf. Cela permet notamment d’avoir des groupes de sites (sites de test, préproduction, production, etc.)

-a –all

L’option -a permet de lancer une action sur l’ensemble des sites configurés dans le fichier de configuration, indépendamment de la valeur du paramètre update = 0 ou 1 affecté au site.

L’option -a s’associe aux options -b, -u, -r, -o.

-c –clean

L’option -c permet de vider le répertoire backup, donc de supprimer toutes les versions de sauvegardes.

-b –backup

L’option -b permet de sauvegarder les fichiers et la base de données des sites du fichier de configuration dont la valeur update est à 1. Si associée à l’option -a, tous les sites du fichier de configuration seront sauvegardés (fichiers et base de données).

-r –restore

L’option -r permet de restaurer un site (fichiers et base de données). Cette opération s’effectue site par site, et propose les différentes versions de sauvegardes. Associée à l’option -a, elle propose l’ensemble des sites du fichier de configuration mais dans tous les cas, un seul site sera restauré à la fin du script.

-d –download

L’option -d permet de télécharger la dernière version de wordpress et de la décompresser dans le répertoire wordpress.

-u –update

L’option -u permet de mettre à jour tous les sites du fichier de configuration dont la valeur update est à 1. Si associée à l’option -a, tous les sites du fichier de configuration seront mis à jour.

A la fin de la réalisation d’un upgrade de wordpress, il est nécessaire de mettre à jour la base (à l’aide du lien donné par le script). Cette opération s’effectue dans un navigateur. L’ancienne version du site est également conservée dans un fichier wordpress.old, juste sous la racine du serveur web. C’est pourquoi il faut lancer l’opération -o pour supprimer les anciens fichiers.

-o –old

Supprime tous les répertoires wordpress.old et les fichiers qu’ils contiennent pour les sites du fichier de configuration dont la valeur update est à 1. Elle peut être associée sans risque à l’option -a pour que l’opération s’applique à tous les sites du fichier de configuration.

2 thoughts on “WordPress Upgrade Script – mise à jour automatique”

Laisser un commentaire