¡El soporte de Systemd ha llegado a WSL! Esta actualización tan esperada a WSL desbloquea una gran cantidad de funciones de calidad de vida para administrar procesos y servicios. Esto incluye compatibilidad con Snapd, que permite a los usuarios aprovechar todas las herramientas y aplicaciones disponibles en snapcraft.io.
El soporte de Systemd es particularmente útil para los desarrolladores web que desean configurar y desarrollar aplicaciones de servicio dentro de WSL antes de implementarlas en la nube. En esta publicación, lo llevamos a través de algunas de las mejores prácticas para comenzar con systemd con esto en mente.
Para obtener más información sobre el soporte de systemd, incluidas demostraciones de los proyectos en esta publicación, vea el video anterior o visite aka.ms/wslsystemd.
Cómo habilitar systemd en Ubuntu WSL
Asegúrese de estar ejecutando el Tienda de Microsoft versión de WSL (versión 0.67.6 y superior) para obtener acceso a systemd. Actualmente está disponible en la última versión de Windows 11 Insiders antes del lanzamiento general a finales de este año.
Dentro de su instancia de Ubuntu, agregue la siguiente modificación a /etc/wsl.conf.
[boot]
systemd=true
Luego reinicie su instancia ejecutando wsl --shutdown
en PowerShell y reiniciando Ubuntu.
Nota: si estás corriendo Vista previa de Ubuntuesta opción estará habilitada por defecto en los próximos días.
¡Con todo configurado, ahora puede comenzar a explorar todas las nuevas funciones habilitadas por systemd!
Use snap para crear una instancia de Nextcloud en minutos en WSL
siguientenube es un conjunto de software cliente-servidor para crear y utilizar servicios de alojamiento de archivos. Piense en ello como un OneDrive o Google Drive de código abierto y autohospedado y una excelente manera de ver el nuevo potencial de systemd y snapd en Ubuntu WSL.
Con el complemento de Nextcloud, puede tener una instancia en funcionamiento en menos de 3 minutos. ¿No me crees? ¡Pruébelo usted mismo!
Primero, instale el Complemento Nextcloud.
$ sudo snap install nextcloud
A continuación, cree un nombre de usuario y una contraseña.
$ sudo nextcloud.manual-install USERNAME PASSWORD
¡Eso es todo! Para verificar que se está ejecutando, use:
$ snap services
Este comando enumerará todos los procesos instantáneos que se ejecutan en la instancia y si están habilitados para ejecutarse al inicio.
También podemos examinar servicios específicos usando systemctl.
$ systemctl status snap.nextcloud.apache
Podemos ver que todo parece estar funcionando correctamente. Puede acceder a su instancia de Nextcloud yendo a http://localhost en el navegador nativo de Windows e ingrese su nombre de usuario y contraseña para ver su nuevo Nextcloud.
A continuación, vayamos al grano. Trabajar directamente en WSL está bien cuando solo está ejecutando una aplicación web. Pero cuando está trabajando en varios proyectos simultáneamente, necesita una forma de cambiar fácilmente entre ellos. El uso de contenedores en estos casos puede mejorar considerablemente su flujo de trabajo.
Gestiona tus proyectos web con LXD
LXD es un contenedor de sistema nextgen que admite imágenes para una gran cantidad de distribuciones de Linux, no solo para Ubuntu. LXD está diseñado para brindar una mejor experiencia de usuario además de los contenedores LXC, que son livianos y fáciles de usar.
En Ubuntu WSL, LXD debe instalarse de forma predeterminada, pero puede comprobarlo ejecutando:
$ snap list
Y si no está ahí simplemente snap install lxd
.
Para asegurarse de que esté actualizado, ejecute:
$ snap refresh lxd
Luego puede inicializar LXD por primera vez ejecutando:
$ lxd init --auto
Esto configura LXD con algunos valores predeterminados razonables. Ejecute esto sin el indicador –auto si deseas jugar con las opciones de configuración.
Comencemos configurando un proyecto de ejemplo. Los proyectos son una forma de agrupar contenedores LXC para que sean más fáciles de administrar. Puede leer más sobre cómo trabajar con proyectos en LXD aquí.
Primero, cree un proyecto llamado ‘sitio web del cliente’:
$ lxc project create client-website -c features.images=false -c features.profiles=false
Luego cambia a trabajar en ese proyecto:
$ lxc project switch client-website
Finalmente creamos dos contenedores LXC, uno para una base de datos y otro para un servidor web:
$ lxc launch ubuntu:22.04 webserver
$ lxc launch ubuntu:22.04 dbserver
Podemos ejecutar:
$ lxc ls
Para ver nuestros proyectos y sus direcciones IP.
Instala tu servidor web
A continuación, instalaremos un servidor web Apache básico en nuestro contenedor de servidor web, podemos ingresar un terminal bash en el contenedor ejecutando:
$ lxc exec webserver bash
E instala apache2:
$ apt install apache2
Usemos systemctl nuevamente para confirmar que todo funciona correctamente:
$ systemctl status apache2.service
Y luego salir del contenedor.
$ exit
Acceder a los contenedores en el navegador nativo de Windows es un poco complejo, sin embargo, con WSLg podemos usar fácilmente un navegador web dentro de WSL para ver todos nuestros proyectos directamente desde la IP del contenedor.
$ sudo snap install firefox
Entonces corre:
$ firefox &
Y navegue a la IP de su contenedor dentro de su navegador web que se ejecuta en Ubuntu.
Este método nos permite trabajar en múltiples proyectos web simultáneamente y acceder a todos ellos a través del navegador sin problemas.
Si deseas obtener información adicional sobre cómo acceder a los contenedores directamente en el navegador de Windows, consulte nuestro nuevo video que cubre el uso de perfiles y dispositivos LXD.
Con un front-end básico en su lugar, configuremos también una base de datos de back-end para nuestro sitio web usando MySQL.
Instalar MySQL
Para instalar MySQL necesitamos salida el servidor web y la transición al contenedor dbserver:
$ lxc exec dbserver bash
Y luego ejecute el siguiente comando:
$ apt install mysql-server
Nuevamente, todo debería estar inmediatamente en funcionamiento, pero podemos verificar con:
$ systemctl status mysql
Y si no podemos iniciar la base de datos con:
$ systemctl start mysql
Para comenzar a interactuar con nuestra nueva base de datos MySQL, es tan simple como ejecutar:
$ mysql
Y luego ejecutar algunos comandos simples:
mysql> show databases;
Proyectos más avanzados
Con suerte, estos ejemplos simples le han dado una idea de los nuevos flujos de trabajo y funciones que ahora están habilitados gracias a systemd en WSL.
Para aquellos de ustedes que quieran ir más allá, también hemos compartido un par de proyectos más avanzados para que los vean.
Implemente su sitio web con MicroK8s y Docker
En el video del desarrollador en la parte superior de esta página, WSL PM Craig Loewen demostró el poder de MicroK8sun Kubernetes liviano y de alto rendimiento con valores predeterminados sensibles que hace que sea rápido y fácil poner a Kubernetes en funcionamiento en su máquina.
Puedes probar la demostración de Craig visitando su github aquí.
Cree una aplicación de servicio con .Net
La plataforma de desarrollo .NET fue una de las primeras contribuciones de Microsoft a los proyectos de código abierto. Su comunidad de desarrolladores consta de más de 5 millones de desarrolladores de .NET, muchos de los cuales adoptan contenedores OCI basados en Linux y Linux en tiempo de ejecución. A principios de este año, anunciamos que .NET 6 ahora está disponible en los repositorios de Canonical.
Con Ubuntu WSL, nunca ha sido tan fácil usar .Net para crear y probar aplicaciones multiplataforma. En nuestro nuevo tutorial, le mostramos cómo crear un chatbot simple con .Net y ejecutarlo como un servicio systemd.
Lea nuestro tutorial completo
¡Empiece hoy con Ubuntu WSL!
Si recién está comenzando con WSL, consulte nuestras guías de instalación de Ubuntu:
Instalar Ubuntu en WSL para Windows 10 ›
Instalar Ubuntu en WSL para Windows 11 ›
Y visite ubuntu.com/wsl para obtener más tutoriales.