Prérequis
- Savoir utiliser Linux en ligne de commande.
Partons du problème
WAMP est très pratique pour développer en PHP. Ce produit propose une solution all-in-one, à la fois simple d’installation et d’utilisation. Mais une fois que l’on veut bidouiller un peu la bête, ça devient l’enfer.
Ce n’est pas tout, voici quelques soucis classiques avec WAMP :
- disparité des environnements de dev dans une équipe de développeurs (que ce soit les version de WAMP, de l’OS)
- difficulté à partager un environnement de dev configuré
- le traditionnel “Je ne comprends pas ce bug… pourtant ça marche chez moi !”
- impossibilité de tester des outils comme ElasticSearch, Varnish, Blackfire.io…
- obligation de réinstaller un nouvel environnement pour coller le plus possible à celui du client (si vous intervenez sur plusieurs environnements)
- …
La solution la plus simple est alors de se créer une machine virtuelle.
On est alors face à un autre problème : la mise en place est à la fois longue et pénible. De
plus, il y a toujours un truc qui ne marche pas… Et puis WAMP, c’est tellement simple à
installer/utiliser !
La solution ? Vagrant !
Vagrant, c’est quoi
Create and configure lightweight, reproducible, and portable development environments. www.vagrantup.com
Vagrant est un outil permettant de simplifier et automatiser des machines virtuelles.
Installation
Vous devez installer 2 choses :
- un outil de virtualisation (virtualbox, vmware, …)
- Vagrant
Vagrant doit normalement être installé dans votre PATH. Exécutez la commande suivante : vagrant -v
dans l’invite de commande. Voici ce qui devrait s’afficher :
Configuration
Tout cela passe par un Vagrantfile, un fichier de configuration pour la machine.
Ce fichier contiendra divers éléments :
- URL de la box (un squelette d’un type de machine)
- adresse IP de la machine
- son nom d’hôte
- emplacement de vos répertoires sur votre machine
- éléments à installer (mysql, apache2, nginx, …)
Pour avoir essayé, ce n’est pas simple d’utilisation. Il faut installer plusieurs plugins et il y a souvent un truc qui ne fonctionne pas. Nous allons donc tout générer automatiquement en passant par un outil web : PuPHPet.
C’est parti !
Pour bien débuter, je vous propose de ne pas partir de zéro.
Je me suis créé une machine qui me sert pour tester mes sites en environnement apache2/mysql sur un
Debian Wheezy 7. Pour virtualiser, j’utilise Virtualbox et mes sites sont sur D:\sites.
Rassurez-vous, vous pourrez réajuster à votre goût.
Une fois que vous avez téléchargé l’archive, faites un drag&drop du fichier config.yml (dans le répertoire puphpet) sur le site de PuPHPet (faites-le avec Chrome, je n’ai pas réussi avec Firefox).
Une fois chargé, n’hésitez pas à revenir sur la configuration et à l’adapter à votre besoin (type de serveur, emplacement de vos sites, …). Sachez tout de même que certaines options sont incompatibles entre elles (ex : PHP7 ne fonctionne que sur Ubuntu 14.04 x64).
Ensuite, il va falloir générer l’archive qui contiendra entre autres le vagrantfile.
Lancez ensuite l’invite de commande. Rendez-vous là où se trouve le Vagrantfile. Exécutez la
commande suivante : vagrant up
Le premier lancement est assez long. Il vous faudra patienter une quinzaine de minutes (le temps de télécharger l’iso de l’OS, d’installer les composants et de paramétrer la machine). Les fois d’après, quelques secondes suffiront. Et voilà, rendez-vous sur l’url indiquée dans votre configuration (sites.local dans le cas présent). Vagrant se charge de modifier le fichier host de Windows (C:\Windows\System32\drivers\etc\host). Normalement tout devrait fonctionner.
Si vous vous êtes trompé quelque part, pas besoin de tout écraser. Un simple vagrant provision
devrait suffire.
Outils complémentaires
Si vous étiez habitué à WAMP, vous deviez utiliser phpMyAdmin pour gérer votre base et Test Mail Server pour tester l’envoi de mail.
Pour l’installation :
- Base de données : pour installer phpMyAdmin : téléchargez manuellement l’archive. Vous pouvez aussi utiliser Adminer. C’est sensiblement la même chose sauf que tout est fait via un seul et unique script.
- Mails : MailCatcher est installé. C’est à dire qu’aucun mail ne sortira de la machine, ils seront tous capturés. Par défaut l’interface se trouve sur le port 1080. L’outil est très simple d’utilisation.
Commandes utiles
Voici quelques commandes utiles :
vagrant
liste toutes les commandesvagrant up
Démarre la machine (du répertoire courant)vagrant ssh
Connexion en ssh avec la machine (du répertoire courant)vagrant halt
Eteint la machine (du répertoire courant)vagrant provision
Met à jour la machine (du répertoire courant)vagrant destroy
supprime la machine (du répertoire courant)vagrant destroy [id de la machine]
supprime la machine dont l’id est passé en paramètrevagrant global-status
affiche les machines et leurs états. C’est ici que vous pourrez retrouver l’id d’une machine.vagrant global-status --prune
même commande que celle ci-dessus. Permet de supprimer les données invalides : si vous avez supprimé une machine en supprimant les fichiers, elle sera toujours dans le cache.
About the author
Hey, I'm Maxence Poutord, a passionate software engineer. In my day-to-day job, I'm working as a senior front-end engineer at Orderfox. When I'm not working, you can find me travelling the world or cooking.
Follow me on Bluesky