Je vous ai déjà parlé rapidement de Lando il y a quelques temps…. c’était plus un cri du coeur d’avoir trouvé une solution simple pour utiliser la technologie Docker.

Qu’est ce que Lando ?

Comme je vous expliquais dans mon article précédent, Lando est une sur-couche permettant d’utiliser facilement la technologie Docker.

Pour faire simple, il faut voir Docker comme un outils modulaire ou chaque brique est le composant de votre serveur Web.
Vous aurez donc besoin par exemple, pour faire tourner un WordPress en local d’une brique Apache, d’une brique PHP et d’une brique Mariadb ou Mysql.
Parmi ces différentes briques, il y a des versions différentes. Par exemple PHP7.0 / PHP7.3 .
Pour développer sainement et éviter les mauvaises surprises lors d’une mise en production, il peut être intéressant d’utiliser lors de nos développements les mêmes versions logiciels que celles utilisées par le serveur qui hébergera le site Web au final. Ainsi on réduit les risques de conflits et erreurs.

Le but de Docker est donc de fournir ces différentes briques et de les faire travailler ensemble… sauf que…

Sauf que, comme je le disais dans mon précédent article, il faut paramétrer tout ca… et avoir des connaissances sysadmin que nous n’avons pas tous… heureusement Lando est arrivé

Installer Lando

Le plus dur dans l’installation de Lando est en fait l’installation de Docker qui est assez simple si vous êtes libre comme moi, c’est à dire sur une distribution Linux. C’est un peu plus compliqué si vous êtes prisonnier d’un système privateur tel Windows ou Mac OS. (Pour une fois qu’on a un truc plus simple sous Ubuntu Linux… )

Bref, Docker tourne nativement sous Linux, il faudra ajouter une machine virtuelle pour installer Docker sur Windows ou Mac OS.

Une fois Docker installé, rendez vous sur le site de Lando pour installer la sur-couche qui va mettre en musique tout ça.

Configurer Lando

Je vous disais plus haut que Lando faisait abstraction de la complexité de paramétrage de Docker.

Toute la configuration de votre serveur de développement va tenir en un fichier texte.

Imaginons que nous voulions créer un site WordPress avec pour url https://mon-super-site.lndo.site.

Il suffit de créer un dossier sur votre machine ou vous avez les droits d’écriture et que vous nommeriez du nom que vous voulez: mon-super-site

Dans ce dossier on va ajouter un fichier .lando.yml qui va contenir toute la configuration du serveur de notre site:

C’est tout! Lando est prêt à fonctionner! et vous prêt à développer!

Décorticons le .lando.yml:

  • Ligne 1: un nom pour votre environnement de développement. Ce nom va servir notament à la construction de l’url de votre projet.
  • Ligne 2: « Recipe » signifie recette en anglais. Lando a mis au point des préconfiguration selon ce que vous aller faire avec. Ici c’est une recette WordPress, elle installera notament wp-cli. Il en existe pour Pantheon, Drupal et bien plus => Lando Recipe
  • Ligne 3: un block config ou vous pouvez spécifiez vos versions logiciel
  • Ligne 7: un block Service ou l’on va lister les services que l’on veut voir fonctionner. ici PhpMyadmin et Mailhog
  • Ligne 16: Composer c’est quand meme pratique quand on travaille dans l’univers PHP.
  • Ligne 19: ce block est facultatif si vous travailler sur un domaine simple. Il peut se révéler très pratique dans le cadre d’un WordPress Multisite en sous-domaine par exemple.
  • Ligne 22: peut etre la partie la plus sympa… effectuer des taches juste après l’import d’une base de donnée… ici on effectue via wp-cli un search & replace pour adapter les url et on désactive l’excellente extension WordPress WP-Rocket car le cache en dev… comment dire 😉

Ce .lando.yml est assez simple et il existe une multitude d’autre configuration et possibilité pour coller au mieux a vos besoin.

Notez que Lando est orienté pour le développement et fortement déconseillé par ses développeur pour une production

Pour lancer une première fois Lando, il convient de faire un `lando rebuild –y`.

A ce moment, il va créer et télécharger ce dont il a besoin. Cette étape peut être longue selon votre connexion web mais elle ne se fera qu’une fois…

Ensuite pour les prochains lancements un `lando start` dans votre terminal positionné dans votre dossier de travail suffira.

Attention la recette WordPress prépare lando techniquement a recevoir WordPress mais n’installe pas WordPress. Vous effectuerez cette étape d’installation comme vous en avez l’habitude ou bien en utilisant ma méthode wp-cli.

J’utilise Local By Flywheel… ca fait pareil!

Hummm chaque solution à ses avantages et ses inconvénients. Lorsque j’ai décidé de tester et finalement d’adopter Lando, Local By Flywheel n’était pas disponible sous Linux. Ce n’est plus le cas depuis l’été 2019.

J’ai testé (trop) rapidement Local By Flywheel et je n’ai pas réussi a faire fonctionner un WP :-/ (notez le trop).

La seule chose que Flywheel apporte pour mon cas est une GUI (Graphical User Interface) alors que Lando… c’est en ligne de commande… mais sincèrement pour faire lando start ou `lando rebuild –y` ? installer une interface qui va forcément utiliser des ressources machine… je n’en ai pas vu l’utilité.

10 commentaires sur “Utiliser Lando pour développer ses projets WordPress en local

  • Mauricio Lopez

    Hi,
    I’ve tried your yaml configuration and it works perfectly. If you already have a working WordPress environment you need to:
    1 backup your database using something like: lando db-export db-exports/`date +%F_%T`.sql
    2 destroy your app: lando destroy -y
    3 import your database: lando db-import db-exports/2020-04-14_23:13:14.sql.gz
    4 start your app

    I also have a question: lando’s documentation states that composer is already included with WordPress recipe (https://docs.lando.dev/config/wordpress.html#tooling), aren’t you installing composer twice?

    Best regards!

    • Sebastien Serre

      Hi Mauricio,
      Your right for the 1st part, but I started on the bases my readers don’nt know lando so will test on a new WordPress install.
      About Composer, you’re right it works without

      tooling:
      composer:
      service: appserver

      But the lando rebuild send me errors on database link while the website is running well… so I’ve added it…

  • Mark

    Hi Sebastian,

    Thank you for this useful write-up. Any chance you know what the steps involved are to get Lando to work for an existing WP multisite with directory structure (not subdomain)? Do we list the directories line by line in ‘Proxy’, and how? Do we edit any other file? A WP file, htaccess file?

    Thank you.

    • Sebastien Serre

      Hello Mark and thank you

      I didn’t test on sudfolder 🙁 but the proxy is to reate different URL as a.example.com is a different domain than b.example.com when example.com/a is the same domain than example.com/b

  • Davide

    Hi,
    thank you for your post.
    Were you able to configure a Lando NGINX recipe for a WordPress Multisite installation (with subfolder schema, not subdomains)?
    If yes, may you share your code or leave me a breadcrumb? I am not able to accomplish this task.

    My best

    • Sebastien Serre

      Hello Davide,
      Thank you for commenting my blog post.
      Unfortunately I never had to configure an nginx environment.

      I’ve sent you an invitation to the Lando’s Slack, you’ll surely find help there.

      Have a nice day

  • Davide Prevosto

    Hello,

    has anyone here ever tried to use this command, into the lando recipe:

    events:
    post-db-import:
    – appserver: wp plugin is-installed wp-rocket && wp plugin deactivate wp-rocket

    I am getting an error unfortunately, and I suppose is about « is-istalled » or « is-active » option.

    ERROR ==> message=, stack=Error
    at /snapshot/lando/build/cli/lib/shell.js
    From previous event:
    at Shell.sh (/snapshot/lando/build/cli/lib/shell.js)
    at Object.dc (/snapshot/lando/build/cli/lib/bootstrap.js)
    at compose (/snapshot/lando/build/cli/lib/bootstrap.js)

    • Sebastien Serre

      Hello Davide,

      Did you experience the same issue on your live website (without Lando ?)

  • Bola Oussou

    hi
    thanks for this tutorial
    It would be very nice if we could have a step by step guide for setting a multisite

    • Sebastien Serre

      Hello and Thank you.
      For a multisite in sub-domain or multi-domain, you just need to create some virtualhost in the « proxy » part of the .lando.yml

      example:

      proxy:
        appserver:
          - main.lndo.site
          - url1.lndo.site
          - url2.lndo.site
          - url3.lndo.site
          - url4.lndo.site

       

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *