Scripts pour semi-automatiser la mise à jour de sites WordPress – Memo

Quelques notes pour moi. Un répertoire doit être créé pour y placer les scripts. Les sauvegardes des bases et des fichiers ainsi que la nouvelle version de WordPress seront également stockés dans ce nouveau répertoire. C’est moche mais c’est comme ça, donc faut prevoir un peu de place s’il y a de gros fichiers dans les wp-content.

0_menage_et_download.sh

Le premier script supprime les anciens fichiers sauvegardés, télécharge et décompresse la dernière version de WordPress. Pour exécuter les scripts avec ./nom_du_script, il faudra modifier les droits sur le script et se donner les droits d’exécution (par exemple chmod 700 *.sh).

#!/bin/sh
echo « `date +%A » « %d » « %B » « %Y » – « %T` »
echo « suppression des dumps sql… »
rm -f ./*.sql
echo « suppression des archives tgz… »
rm -f ./*.tgz
rm -f ./*.gz
echo « suppression du repertoire wordpress… »
rm -rf ./wordpress
echo « nettoyage termine. »
echo « `date +%A » « %d » « %B » « %Y » – « %T` »

echo « telechargement du dernier wordpress… »
wget https://wordpress.org/latest.tar.gz

echo « decompactage du dernier wordpress… »
tar -xzvf ./latest.tar.gz

echo « Initialisation des mises a jour terminee. »
echo « `date +%A » « %d » « %B » « %Y » – « %T` »

1_script_maj_wp_sauve.sh

Le deuxième script réalise les sauvegardes des bases sql et des fichiers.

Le texte en italique est à remplacer par vos propres paramètres.

#!/bin/sh
echo « `date +%A » « %d » « %B » « %Y » – « %T` »
echo « sauvegarde des bases… »
mysqldump -u iduser_sur_la_base1 -pmot_de_passe -h nom_du_serveur_de_bdd nom_de_la_base > nom_sauvegarde_base.sql
#la ligne ci dessus est a ecrire pour chaque base a sauvegarder
echo « sauvegarde des bases terminee »
echo « `date +%A » « %d » « %B » « %Y » – « %T` »

echo « sauvegarde des repertoires… »
tar -czf nom_sauvegarde_fichiers_site1.tgz /var/www/repertoire_site1
#la ligne ci-dessus est a ecrire pour chaque site a sauvegarder
echo « sauvegarde des repertoires terminee »
echo « `date +%A » « %d » « %B » « %Y » – « %T` »

2_script_maj_wp_site1.sh

Le troisième script réalise les mises à jour proprement dites. Pour plus de sécurité, on fait les mises à jour site par site. On écrit donc un script par site et on les lance les uns après les autres, après avoir vérifié que les sites fonctionnent bien après mise à jour.

Le texte en italique est à remplacer par vos propres paramètres.

#!/bin/sh
echo « `date +%A » « %d » « %B » « %Y » – « %T` »
echo « conserve le rep en .old »
mv /var/www/site1/wordpress /var/www/site1/wordpress.old
echo « copie le nouveau wordpress »
cp -R wordpress /var/www/site1

echo « `date +%A » « %d » « %B » « %Y » – « %T` »
echo « reprend le wp-config »
cp -p /var/www/site1/wordpress.old/wp-config.php /var/www/site1/wordpress/
echo « reprend le wp-content »
cp -Rp /var/www/site1/wordpress.old/wp-content /var/www/site1/wordpress/
echo « Il faut maintenant aller sur http://url_du_site1/wp-admin/upgrade.php pour finir la mise a jour »
echo « FIN »
echo « `date +%A » « %d » « %B » « %Y » – « %T` »

Note 1 : on n’a pas besoin de remettre les droits sur les répertoires car la commande cp avec l’option -p permet de conserver le proprietaire et les permissions.
Note 2 : on doit aller dans un navigateur sur http://url_du_site1/wp-admin/upgrade.php lorsqu’il y a une mise à jour de la base de données à effectuer.
Note 3 : une fois qu’on a vérifié que tout fonctionne bien, il ne faut pas oublier d’aller dans /var/www/site1 pour supprimer le répertoire wordpress.old et les fichiers qui se trouvent dedans.

J’espère que ce petit tutoriel vous sera utile. J’ai diminué considerablement le temps de mise à jour grace à ces scripts pourtant très basiques. Nous sommes le 28/02/2015 et la version actuelle de WordPress est la 4.1.1. Je n’ai aucune garantie que ces scripts fonctionneront toujours pour les mises à jours suivantes. Faites-moi signe si vous constatez que cette page est obsolète. Merci. anthony(AT)nonsenz.org.

Laisser un commentaire