WordPress est l’un des CMS les plus utilisés dans le monde. Il convient parfaitement à certaines typologies de projet, et il est donc naturel que les clients soient habitués à son interface.
En revanche, bien que son installation soit accessible au plus grand nombre, il est parfois un peu complexe d’industrialiser son déploiement.
Problématique
Lorsque l’on installe pour la première fois WordPress, on le fait généralement de cette manière :
- Téléchargement du zip
- Décompression
- Installation via l’interface de WordPress présent dans le dossier install
- Suppression du dossier install (quand on y pense)
Tout ça c’est bien beau en local, mais quand il s’agit de le mettre sur le serveur final, comment fait-on ?
Là encore, la première question à laquelle on pense : Y-aurait-il un plugin qui peut le faire à ma place ?
La réponse est : oui. Et ce plugin s’appelle Duplicator. Il permet -comme son nom l’indique- de dupliquer le site vers un environnement différent.
Le plugin procède comme suit :
- Création d’une archive zip à un instant T contenant l’ensemble des fichiers et le dump de la base de données
- Création d’un fichier installer.php qui est un interface d’installation sur le serveur cible
On envoie alors tout ça sur le serveur de destination, on appelle le fichier installer.php via le navigateur et on se laisse guider.
Cette solution fonctionne, mais quand on va vouloir automatiser ce processus, notamment via des outils comme Jenkins ou Travis, on va vite se rendre compte que ce n’est tout simplement pas possible.
WordPlate à la rescousse !
Heureusement, une bande de développeurs a pensé à nous et a mis en place le projet WordPlate.
Gestion du core, des thèmes et des plugins
Le projet est basé sur le gestionnaire de dépendances Composer, et embarque WordPress ainsi que tous les plugins qui sont considérés en tant que tels. Vous pourrez ainsi soulager vos dépôts en ne versionnant que le nécessaire !
Pour installer un nouveau projet, rien de plus simple :
composer create-project wordplate/wordplate
La dernière version de WordPress est par défaut utilisée. Mais il est tout à fait possible de spécifier la version voulue :
"require": { "johnpbloch/wordpress": "4.7.1" }
L’intégration de plugins ou thèmes gratuits se fait par l’intermédiaire du site wpackagist qui est un miroir du dépôt SVN de WordPress :
“require”: { "wpackagist-plugin/polylang": "^2.1", }
Pour les plugins ou thèmes payants, leur mise en place est un peu différente. Vous pouvez les héberger sur un dépôt git privé ou en zip dans votre projet comme ci-dessous :
"repositories": [{ "type": "package", "package": { "name": "mon-projet/mon-plugin-payant", "type": "wordpress-plugin", "version": "1.0", "dist": { "type": "zip", "url": "./resources/plugins/mon-plugin-payant.zip" } } }], "extra": { "installer-paths": { "public/plugins/{$name}": ["type:wordpress-plugin"], } }
Variables d’environnement
Le second point primordial lorsque l’on parle d’industrialisation est l’utilisation de variables d’environnement. En effet, d’un environnement à l’autre, certaines informations diffèrent: identifiants de connexion à la base de donnée, serveur de mail, etc.
WordPlate utilise le projet PHP dotenv qui vise à utiliser des fichiers .env pour stocker toutes vos variables d’environnement. Il les rend ainsi accessibles via la méthode getenv() ou les super-globales $_ENV et $_SERVER.
Base de données
Afin de mettre à jour la base de données, il vous faudra mettre les mains dans le cambouis !
Mais là encore, WordPlate vous facilite la vie en embarquant l’utilitaire WP_CLI. Celui-ci vous permet d’exporter votre base de données, puis de la réimporter sur le serveur de destination, avec les commandes suivantes :
wp db export --add-drop-table
wp db import
Une fois votre base de données importées, il ne vous reste plus qu’à remplacer les occurences de l’ancien domaine par le nouveau :
wp search-replace ancien-domaine.fr nouveau-domaine.fr
Conclusion
WordPlate rend l’industrialisation de WordPress à la fois plus simple et plus claire. Cependant, la communauté semble réduite et vous ne trouverez pas forcément de réponse aux problèmes que vous rencontrerez. Il faudra alors vous armer de patience.
Cela étant, après un temps d’adaptation très court, vous tirerez rapidement bénéfice de cette solution.