Archives pour la catégorie Wordpress

Mettre à jour ses sites Worpdress en quelques minutes, en ligne de commande

L’utilitaire wp-cli.phar est le « drush » de Drupal : il permet de lancer tout un tas de commandes Wordress habituellement faites via l’interface Web, en ligne de commande.
C’est plus rapide et scriptable !

Personnellement, j’utilise un utilisateur Linux différent pour chacun de mes sites.
Afin de simplifier la chose, j’ai choisi une installation globale de wp. J’en dispose ainsi pour tous mes sites.
Il faut donc configurer sudo pour donner les permissions à chacun de ces utilisateurs d’exécuter WP :

  1. Installer wp en suivant la doc d’install, tout simplement. Vous devez ensuite avoir votre script dans /usr/local/bin/wp.
  2. La partie un peu pénible peut être de configurer SUDO, car c’est un peu capricieux parfois…
  3. N’oubliez pas de donner les droits d’exécution à votre script wp pour les utilisateurs qui vont l’utiliser (ou à « others », chmod  755 /usr/local/bin/wp)

Ajouter les lignes suivantes dans votre configuration SUDO, en adaptant selon vos besoins (users, etc.)

User_Alias      GROUP_WP = web_AAA, web_BBB, web_CCC

Cmnd_Alias      CMD_WP = /usr/local/bin/wp

# le groupe des users WP a le droit aux commandes CMD_WP
GROUP_WP       ALL = NOPASSWD: CMD_WP

Ca vous permet ensuite de lancer la commande « wp » comme suit, sachant que je respecte une norme commune pour tous mes sites : chaque DOCUMENT_ROOT est contenu dans le sous-répertoire « www » du HOMEDIR.

sudo -u web_AAA -i -- wp core update --path=/home/web_AAA/www

 

Vous pouvez pousser le bouchon en vous créant un bash pratique, afin de mettre à jour tous vos WordPress en masse :

#!/bin/bash
# WordPress users (name of their home directory)
users=('web_AAA' 'web_BBB' 'web_CCC')

for user in "${users[@]}"
do
  echo "Upgrading $user wordpress and its plugins"
  sudo -u $user -i -- wp core update --path=/home/$user/www
  sudo -u $user -i -- wp plugin update --all --path=/home/$user/www
  sudo -u $user -i -- wp theme update --all --path=/home/$user/www
done

Et voilà ! Enjoy 😀