Lando en WSL2: La manera correcta

Lando Taberna WordPress

Lando es un sistema Open Source para ejecutar sitios web en local, ya sean de WordPress o de otro tipo (Drupal, LAMP, LEMP, etc.).

Dispone de multitud de opciones, se integra perfectamente con Visual Studio Code y otros editores y tenemos multitud de opciones para adaptarlo totalmente a nuestras necesidades (versión de PHP, XDebug, base de datos, servidor web, npm, gulp, phpMyAdmin, etc., etc.).

Es una herramienta fantástica para el desarrollo web y es la que utilizo además de Local (dependiendo del desarrollo) desde que hace unos meses me picó el gusanillo a raíz de unas conversaciones en el Club El Arroyo Dev (club imprescindible si eres desarrollador web profesional).

Si quieres evitarte toda la literatura e ir directamente a la instalación, te recomiendo que vayas a la versión corta.

WSL2

Lo primero que necesitaremos para instalar Lando en WSL2, es WSL2, evidente, ¿no?.

Si no sabes lo que es WSL2, quizás sea mejor que instales Local y acabes aquí el tutorial.

Efectivamente, lo que quieres es instalar Lando en WSL2 (si no, ¿qué harías aquí?), lo primero que tienes que hacer es comprobar que no tienes instalado Docker en Windows, de no ser así, desinstala y reinicia o no tendrás más que problemas a posteriori y acabarás volviendo a este punto.

El siguiente punto a tener en cuenta antes de comenzar es comprobar que tu ordenador soporta la virtualización y que está activada. La forma más fácil de verificarlo es en el Administrador de tareas, pestaña rendimiento y bajo los gráficos de CPU verás si soporta la virtualización y está activada.

Virtualización

Ahora deberemos entrar en nuestra instalación de WSL2 con Ubuntu y ejecutar el siguiente comando:

# curl -Ls https://github.com/lando/hyperdrive/releases/download/v0.6.1/hyperdrive > /tmp/hyperdrive \
  && chmod +x /tmp/hyperdrive \
  && /tmp/hyperdrive

Este comando lo que hará es lo siguiente:

  1. Descargar una copia del archivo https://github.com/lando/hyperdrive/releases/download/v0.6.1/hyperdrive
  2. Copiar su contenido a /tmp/hyperdrive
  3. Hacer ejecutable el archivo /tmp/hyperdrive
  4. Ejecutar el script /tmp/hyperdrive

Y eso es todo.

Bueno deberemos ir respondiendo a las preguntas e ir aceptando que instale todo lo requerido, Docker, Lando y todo lo que sea necesario:

Instalación de Lando con Hyperdrive

Así de fácil. Gracias a Hyperdrive podremos instalar Lando con todas sus dependencias de una manera fácil, rápida y segura.

Y ¿ahora?

Ahora a disfrutar de Lando y sus muchas posibilidades. Solo recordarte que para obtener un buen rendimiento sobre WSL2 utilices el sistema de archivos de WSL2 y no el de Windows, es decir, no lo ejecutes sobre tu usuario de Windows que suele ser el directorio por defecto.

Si tenéis un archivo de alias en vuestro Bash o ZSH, podéis crear uno para el home de WSL y otro para el de Windows, algo así:

# Ir al directorio home
alias h='cd /home/linux-home-user/'

# Ir al directorio home Windows
alias hw='cd /mnt/c/Users/windows-home-user/'

Y después de cargar el archivo de alias, desde vuestro .bashrc o .zshrc ejecutar h para que cada vez que abráis la consola entre por defecto en vuestro directorio de Linux y no en el de Windows.

Si creas un recipe similar a este:

Lando WordPress recipe

Ya podremos «levantar» nuestro sitio web, descargar el core con wp-cli (wp core download), instalar, ejecutar, etc… y la verdad es que con unos magníficos tiempos de respuesta una vez levantado el sitio web (lando start):

Lando ejecutándose

Versión corta

Ejecuta el siguiente comando:

# curl -Ls https://github.com/lando/hyperdrive/releases/download/v0.6.1/hyperdrive > /tmp/hyperdrive \
  && chmod +x /tmp/hyperdrive \
  && /tmp/hyperdrive

Sigue las instrucciones.

Tómate un cafelito que te lo has ganado 😉

Actualización del 24/02/2022

Diego F. C. nos cuenta desde El Arroyo Club lo siguiente:

Las máquinas que tenía usando Lando para desarrollo WordPress iban un poco lentas y las actualizaciones no se podían realizar, salía alguna «alertilla», etc. Tras ver un poco qué pasaba, el problema era que la imagen de Docker sobre la que corre el WordPress no podía «resolver» DNS que no fueran internas.

SOLUCIÓN:

Crear/editar dentro de la máquina WSL2 sobre la que ejecutéis Lando el archivo /etc/docker/daemon.json y añadir un json con estos valores (u otras DNS como veáis, estas son las de CloudFlare):

{
"dns": ["1.1.1.1", "1.0.0.1"]
}

Paramos lo que tengamos corriendo con lando (# lando stop).

Reiniciamos docker (# sudo service docker restart o si preferís # sudo service docker stop y # sudo service docker start).

Lanzamos de nuevo lo que necesitemos con lando (# lando start)
y voilá! Ya reconoce las DNS.

Muchas gracias, Diego, por la aportación.

Deja un comentario