vagrant up et dites adieu à WAMP !

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 : vagrant version

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. vagrant version

Commandes utiles

Voici quelques commandes utiles :

  • vagrant liste toutes les commandes
  • vagrant 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ètre
  • vagrant 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.

Immutability without JS library

Last month, I gave a talk about [*Immutability for functional JavaScript* in the DublinJS meetup (slides)](http://slides.maxpou.fr/immuta...… Continue reading

A la découverte d'Hubot

Published on July 14, 2017