Dans notre article détaillé sur l’hébergement de WordPress, nous avons vu que ce moteur de CMS constitue une cible de prédilection des attaques malveillantes, au vu de la popularité de l’application. Il est donc crucial de garder son installation à jour pour éviter de se faire pirater son installation. Certes, WordPress est théoriquement capable d’effectuer des mises à jour automatiques, mais cette façon de procéder nécessiterait l’ouverture des droits d’accès en écriture du serveur Web sur l’ensemble de l’installation, ce qui constitue un risque de sécurité. Reste la procédure manuelle, qui s’avère quelque peu pénible. Si vous avez comme moi un certain nombre d’installations WordPress sur différents serveurs à gérer, cela devient vite pénible.
C’est là où WP-CLI va nous faciliter la tâche, en nous permettant une gestion automatisée des mises à jour tout en respectant une sécurisation maximale de notre installation. WP-CLI est une interface en ligne de commande qui permet de gérer une ou plusieurs installations WordPress sur un serveur, sans avoir recours à une interface graphique. Les fonctionnalités de WP-CLI sont nombreuses, mais nous n’allons pas toutes les aborder. Nous nous contenterons d’utiliser cet outil pour la maintenance de WordPress et de tout ce qui va avec, c’est-à-dire les extensions et les thèmes.
Prérequis
WP-CLI a besoin de la commande /usr/bin/php
pour fonctionner. Sous Rocky Linux 8, cette commande est fournie par le paquet php-cli
qui fait partie de notre installation de base de PHP :
# which php /usr/bin/php # rpm -qif /usr/bin/php | head -n 1 Name : php-cli
Installation de WP-CLI
Télécharger WP-CLI sur le dépôt du projet :
# cd ~/webapps/wordpress/ # wget http://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar # ls -lh wp-cli.phar -rw-r--r--. 1 root root 6.7M Dec 28 09:11 wp-cli.phar
Vérifier que tout fonctionne :
# php wp-cli.phar --info OS: Linux 4.18.0-513.9.1.el8_9.x86_64 #1 SMP Wed Nov 29 18:55:19 UTC 2023 x86_64 Shell: /bin/bash PHP binary: /usr/bin/php PHP version: 7.4.33 php.ini used: /etc/php.ini MySQL binary: /usr/bin/mysql MySQL version: mysql Ver 15.1 Distrib 10.3.39-MariaDB, for Linux (x86_64) using readline 5.1 SQL modes: WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli WP-CLI vendor dir: phar://wp-cli.phar/vendor WP_CLI phar path: /root/webapps/wordpress WP-CLI packages dir: WP-CLI cache dir: /root/.wp-cli/cache WP-CLI global config: WP-CLI project config: WP-CLI version: 2.9.0
Pour utiliser WP-CLI à partir de la ligne de commande en tapant wp
, on va rendre le fichier exécutable tout en le copiant vers un endroit approprié quelque part dans le PATH
et en le renommant :
# chmod +x wp-cli.phar # cp -v wp-cli.phar /usr/local/bin/wp 'wp-cli.phar' -> '/usr/local/bin/wp' # which wp /usr/local/bin/wp
Maintenance de WP-CLI
WP-CLI peut gérer lui-même ses propres mises à jour. L’option check-update
affiche les mises à jour disponibles :
# wp cli check-update Success: WP-CLI is at the latest version.
Lorsqu’une mise à jour est disponible, c’est l’option update
qui permet de l’installer :
# wp cli update
You have version 2.8.0. Would you like to update to 2.9.0? [y/n] y
...
Success: Updated WP-CLI to 2.9.0.
Mises à jour WordPress manuelles
WP-CLI devra être invoqué depuis la racine du site WordPress :
# pwd /var/www/slackbox-blog/html
Si vous ne savez pas exactement à quoi correspond la racine de votre site WordPress, cherchez tout simplement l’emplacement du fichier de configuration wp-config.php
.
Vérifions s’il y a une mise à jour :
# wp core check-update Success: WordPress is at the latest version.
Lorsqu’une mise à jour est disponible, on peut la récupérer et l’installer comme ceci :
# wp core update
Affichez la liste des extensions :
# wp plugin list +---------+----------+--------+---------+ | name | status | update | version | +---------+----------+--------+---------+ | akismet | inactive | none | 5.3 | | hello | inactive | none | 1.7.2 | +---------+----------+--------+---------+
Lorsqu’une ou plusieurs mises à jour sont disponibles pour les extensions, on peut effectuer la mise à jour comme ceci :
# wp plugin update --all
On procèdera de même pour les thèmes. Dans un premier temps, affichez l’état des thèmes installés :
# wp theme status 3 installed themes: A twentytwentyfour 1.0 I twentytwentythree 1.3 I twentytwentytwo 1.6 Legend: A = Active, I = Inactive
Mettre à jour l’ensemble des thèmes installés lorsqu’une ou plusieurs mises à jour sont disponibles :
# wp theme update --all
Scripter la procédure
Une fois que tout fonctionne comme prévu, nous pouvons scripter la procédure. Dans mon dépôt Gitlab, je fournis un script shell wordpress-update.sh
qui trouve automatiquement toutes les installations WordPress sur le serveur tout en se chargeant de la définition correcte des permissions ainsi que de la mise à jour de tous les composants.
Récupérer le script :
# cd # git clone https://gitlab.com/kikinovak/wordpress
Copier le script vers un endroit approprié :
# cp -v wordpress/wordpress-update.sh ~/bin/ 'wordpress/wordpress-update.sh' -> '/root/bin/wordpress-update.sh'
Éditer une poignée de variables pour adapter le script à la configuration locale :
# WP-CLI WP='/usr/local/bin/wp' # Download DOWNLOAD='http://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar' # Apache HTUSER='apache' HTGROUP='apache' # User WPUSER='nobody' WPGROUP='nobody' # Webroot WPROOT='/var/www' # Search depth DEPTH=4
Exécuter le script :
# /root/bin/wordpress-update.sh Updating WP-CLI to the latest version. Success: WP-CLI is at the latest version. Found WordPress installation at: /var/www/slackbox-blog/html Setting file permissions. Updating WordPress core. Success: WordPress is up to date. Updating WordPress plugins. Success: Plugin already updated. Updating WordPress themes. Success: Theme already updated.
Il ne nous reste plus qu’à définir un lancement automatique de la mise à jour sur notre serveur. On pourra définir une tâche programmée comme ceci, par exemple :
# crontab -e
# Update WordPress every day at 04:15 AM
15 04 * * * /root/bin/wordpress-update.sh 1> /dev/null
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
1 commentaire
Roneo · 1 janvier 2024 à 13 h 43 min
Pour compléter, j’ai rédigé un guide sur wp-cli, avec des petits bouts de scripts dedans:
https://roneo.org/wordpress-installation-rapide-et-automatique-avec-wp-cli/