Vous développez un site mais celui ci est en production. Comment faire pour le modifier sans risquer de le faire sauter ? Généralement pour le code on utilises git, mais pour tester votre code il vous faut une copie du site. Le cycle est le suivant :
- je fais une copie du site de production vers mon site local (avec docker je m’assures que l’environnement serveur est le même), code et base de donnée
- je fais mes corrections, je teste (idéalement avec outil de tests automatisés, tel behat)
- je renvoies le nouveau code sur le site de production (via git), en incluant les mises à jour de base de donnée, mais je n’envoies pas la base elle même
Rien de bien compliqué en apparence mais voila, il y a un hic, comment faire si, par exemple, j’ai une boutique woocommerce et que je veux utiliser un moyen de paiement factice, ou d’autres modules que je dois paramétrer différemment en local (comme par exemple l’envoies de notifications email) ?
Je vais devoir configurer mon wordpress légèrement différemment, et à chaque fois que je vais récupérer la dernière BDD de prod, je vais devoir changer tous ces paramètres un par un. A moins que …
Voici la configuration que j’utilise pour faire du staging wordpress :
- Avec le plugin updraft plus : une fois un FTP ou un S3 configuré, on peut très facilement faire une sauvegarde d’un coté et une restauration de l’autre
- Je met dans mon wp-config.php du site local
define( ‘WP_HOME’, ‘https://xxx’ ); define( ‘WP_SITEURL’, ‘https://xxx’ ); - Avec le plugin Velvet Blues Update URLs je fais une passe sur le contenu en base
- Avec JSON Options (et Get Options pour savoir lesquelles) j’ai un moyen d’exporter la configuration spécifique au site local
- Avec WP dev flag je met un bandeau afin de différencier visuellement le site local du site de production (ce qui évite bien des erreurs d’inattentions, indispensable)
Et voila, le tour est joué.
PS : si jamais vous ne voulez pas activer les même modules par défaut sur les 2 sites, je vous conseille ce lien.