En un tutorial anterior aprendimos como instalar WSL 2 y Ubuntu en Windows 10 y utilizar todas las bondades de un sistema de Linux sin salir del sistema operativo de Microsoft. En este post nos toca aprender a crear un ambiente de desarrollo para Laravel utilizando la potencia de esta nueva versión de WSL.
Para iniciar, ejecutaremos los siguientes comandos para tener nuestra distro actualizada
sudo apt update && sudo apt upgrade -y
Una vez actualizado, vamos a requerir instalar las dependencias para un desarrollo de Laravel, la lista de dependencias que utilizaremos son:
Para ello ejecutamos:
sudo apt-get install network-manager libnss3-tools jq xsel build-essential libssl-dev zip unzip dnsmasq nginx mysql-server php-fpm php-cli php-mysql php-sqlite3 php-intl php-zip php-xml php-curl php-mbstring redis-server php-redis php-pear php-dev pkg-config libz-dev libzip-dev libmemcached-dev libmemcached11 libmemcachedutil2 libmagickwand-dev imagemagick memcached
<h3>Setup de MySQL</h3>
Algo elemental y básico dentro del desarrollo backend es contar un servidor de base de datos para crear conexiones y gestionar la información a través del código que realizamos en el backend, en este caso utilizaremos MySQL, para no tener mucha dificultad en el desarrollo realizamos los siguientes pasos:
sudo usermod -d /var/lib/mysql/ mysql
sudo service mysql start
<- para echar andar el servicio de mysql (muy importante 😅)sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'tu_contraseña_va_aqui';
FLUSH PRIVILEGES;
exit
y reiniciamos el servicio de mysql sudo service mysql restart
Con estos pasos dejamos un setup de MySQL para que podamos acceder vía password desde nuestros proyectos de Laravel, también funciona para phpmyadmin
.
Si quieres combinar el desarrollo de Laravel con JavaScript para tu frontend en tu mismo proyecto, podremos necesitar de NodeJS, su instalación es sencilla usando los siguientes pasos:
cd ~
<- Nos vamos al directorio home de nuestro usuariocurl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
<- Descargamos el binario del LTS de Node.js (puede variar con el paso del tiempo)sudo apt-get install nodejs -y
Y con esto dejamos listo Node para ser utilizado dentro de nuestra distro de WSL.
Para realizar la instalación de nuestro setup de Laravel necesitamos de Composer el gestor de dependencias de PHP
<h3>Composer</h3>cd ~
wget https://getcomposer.org/installer
php installer
sudo mv composer.phar /usr/local/bin/composer
~/.bash_aliases
con nano ~/.bash_aliases
y exportamos dentro del archivo la siguiente linea, así hacemos composer accesible de manera global en el sistema: export PATH=~/.config/composer/vendor/bin:$PATH
source ~./bashrc
Listo, ya tenemos Composer!
<h3>Valet</h3>La versión de Valet que utilizaremos es una versión especial para WSL que fue creado para WSL 1, pero te preguntaras ¿por qué utilizar esta versión modificada? La Razón es porque al utilizar la versión normal de Valet de Ubuntu este nos bloquea el puerto que requiere nuestra distro para tener salida a internet (ya sea npm, git, etc).
Claro, este problema solo sucede con WSL 2, si sigues la mayoria de estos pasos en una distro normal no dará problema alguno.
Para instalar Valet seguimos los siguientes pasos:
composer global require valeryan/valet-wsl
valet install
~/development/php
, cuando ya te encuentras en tu carpeta, ejecuta valet park
, este último comando hace que valet siempre lea los proyectos en ese directorio.valet domain tu_dominio
De lado de Windows solo necesitamos modificar el archivo por cada proyecto que vayamos agregando, dicho archivo se encuentra en C:\Windows\System32\drivers\etc
, el archivo que necesitamos modificar se llama hosts (sin extensiones), para ello editamos dicho archivo en modo administrador.
La estructura de dicho archivo es, procura no modificar nada más lo que vayamos agregando al final:
# Copyright (c) 1993-2009 Microsoft Corp.## This is a sample HOSTS file used by Microsoft TCP/IP for Windows.## This file contains the mappings of IP addresses to host names. Each# entry should be kept on an individual line. The IP address should# be placed in the first column followed by the corresponding host name.# The IP address and the host name should be separated by at least one# space.## Additionally, comments (such as these) may be inserted on individual# lines or following the machine name denoted by a '#' symbol.## For example:## 102.54.94.97 rhino.acme.com # source server# 38.25.63.10 x.acme.com # x client host# localhost name resolution is handled within DNS itself.# 127.0.0.1 localhost# ::1 localhost# Aquí agrega los proyectos que necesitas con el paso del tiempo con127.0.0.1 tu_proyecto.tu_dominio
Y listo, al acceder con tu navegador con tu URL ya puedes navegar tus proyectos de Laravel de lado de Windows y tener tu ambiende de desarrollo en WSL!
Cono dato adicional.
En el paso 3 de la instalacion de vale, tuve un problema con el comando
valet install
, lo que hice fue correr este comando:test -d ~/.composer && bash ~/.composer/vendor/bin/valet install || bash ~/.config/composer/vendor/bin/valet install
Y luego segui normalmente…
Fuente
Me sale Valet only supports the Mac operating system.
Estoy con ubuntu 20.04, tiene alguna otraidea?
Tremendo post, está excelente. Luego no entendía por qué no sirve esta cosa. Lo instalaba mil veces pero con valet ya anda bien.
La última instrucción después de modificar el archivo .bashrc tiene un pequeño error en el punto.
Debe ser:
source ~/.bashrc
Descubre qué es el Modelo TCP/IP
Lo siento, a mi no me funciona el
valet install```, me arroja este comentario:
PHP Fatal error: Cannot declare class Facade, because the name is already in use in /home/paulmoro/.config/composer/vendor/valeryan/valet-wsl/cli/includes/facades.php on line 5``ya somos dos!
alguien lo sabe solucionar?
Gracias!!!
Esto vale oro
Hola, solo para decirte que hay un ligero error en la parte de
"Setup para Laravel Valet", en el paso 6 “Y reiniciamos nuestro bash con source ~./bashrc” falta el el punto en el nuombre del archivo, ya que este es un archivo oculto.
Pero en lo demás, excelente curso, había tenido problemas al usar laravel con WSL pero con esto me ayudo bastante.