En la clase anterior creamos los endpoints para Products. ¿Cómo te fue creando el modelo, factories, seeders y migraciones para el endpoint de Categories?
Para evitar tener que configurar todo el entorno de desarrollo que vamos a usar en el curso, es decir, el motor Base de Datos, Redis, Cliente de correo, entre otros. En esta clase te voy a enseñar como dejar de preocuparte de ahora en adelante de la infraestructura local de tu proyecto usando Laravel Homestead.
¿Cómo funciona Homestead?
Laravel Homestead es una máquina virtual oficial del framework que viene lista para el desarrollo de proyectos con Laravel y otras tecnologías de PHP.
Con ella tienes un servidor web muy parecido al que deberías tener en producción. Y no pierdes tiempo configurando o teniendo problemas al instalar Node.js, Redis o cualquier otra herramienta que necesites para tu desarrollo.
Lo genial de Homestead es que puedes instalarlo en cualquier sistema operativo (Linux, Windows, o Mac). Y créeme, si tu equipo de trabajo lo utiliza, te va a quitar de encima la excusa de "en mi máquina sí funciona".
Homestead funciona sobre VirtualBox utilizando Vagrant:
VirtualBox es la herramienta que nos permite crear máquinas virtuales.
Vagrant es una manera elegante y sencilla de administrar y aprovisionar máquinas virtuales como Laravel Homestead.
Requisitos para instalar Homestead
Lo primero es descargar las dos aplicaciones desde sus páginas oficiales.
Recuerda que tu equipo debe tener activada la opción de Virtualización. En la BIOS debes buscar las opciones de virtualización, esto depende del fabricante, pero por lo general debes ver un área para habilitar una de las siguientes opciones: VT-x si tu procesador es Intel y AMD-v si tu procesador es AMD. En algunos equipos viene habilitado por defecto, pero si en el proceso de instalación tienes algún error, posiblemente es por esto.
La instalación es bastante simple, no debemos configurar nada en especial. Deja las opciones por defecto y dale clic en siguiente, la configuración se hará directamente usando los comandos que verás a continuación.
Primero vamos a agregar la Box de Vagrant que nos provee Laravel. Es bastante pesada, así que puede que este paso demore bastante si tienes una velocidad de descarga baja.
Dentro de la terminal (abre la terminal) basta con escribir el siguiente comando para empezar la descarga:
vagrant box add laravel/homestead
Instalando Homestead
Al terminar, vamos a instalar Homestead clonando el repositorio donde mejor te parezca usando git, te recomiendo que lo hagas dentro de tu directorio home.
Luego de clonar el repositorio lo puedes instalar ejecutando el comando bash init.sh en tu consola dentro de la carpeta que clonaste (cd Homestead && bash init.sh). Si ussas Windows, entonces es init.bat.
Como resultado se creará un archivo llamado Homestead.yaml que estará ubicado en el directorio oculto ~/.homestead para Linux. En mi caso se creó dentro de C:\Users\Sergio Ojeda\.homestead\Homestead.yaml.
Configurando Homestead
El archivo Homestead.yaml es el archivo de configuración de Homestead. Ahí podemos definir una serie de campos como la IP, memoria y el proveedor de servicios. Debemos asegurarnos que el mismo esté de acuerdo a nuestras preferencias:
Para usarlo debemos tener creada nuestra Key SSH. Si aún no la tenemos, podemos ejecutar en nuestra consola (si usas Windows, te recomiendo Git Bash para esto):
ssh-keygen -t rsa -C"soj3da@gmail.com".
Podemos dejar todo por defecto tecleando enter hasta que nos genere nuestra llave pública, dentro de una ruta la cual debe coincidir con:
authorize:~/.ssh/id_rsa.pubkeys:
Carpeta Compartida
La propiedad folders del archivo Homestead.yaml muestra todas las carpetas que deseas compartir con Homestead. A medida que cambien los archivos dentro de estas carpetas, se mantendrán sincronizados entre tu máquina local y Homestead. Se pueden configurar tantas carpetas compartidas como sea necesario, pero para nuestro caso solo configuramos una:
folders:- map:~/Codeto:/home/vagrant/Code
En el caso de Windows, yo la ubique de la siguiente forma:
folders:- map:C:\\Proyectosto:/home/vagrant/Code
Configurar los sitios y base de datos
Para configurar nuestros sitios tenemos la propiedad sites, en la cual, dentro de map, podemos asignar un dominio fácilmente y apuntarlo a una de nuestras carpetas.
Cada vez que desees agregar un nuevo sitio, se hace dentro de este archivo. Y podrás configurar tantos como desees. También tenemos una propiedad databases, en la cual podemos crear cuantas Bases de Datos queramos.
databases:- laraveles
- platzi-api
Iniciando la máquina virtual
Luego de haber configurado nuestro archivo Homestead.yaml, nos queda iniciar la máquina virtual. Primero debemos ubicarnos dentro de la carpeta donde clonamos el repositorio y en consola ejecutar vagrant up.
Esto creará nuestra máquina virtual según lo que hayamos colocado en nuestro archivo de configuración. Luego de esto podremos acceder vía SSH a nuestra máquina dentro de la misma carpeta con el comando vagrant ssh.
Y podemos trabajar tal cual como si utilizáramos una máquina con Ubuntu con todo ya configurado. Al entrar podemos movernos a la carpeta donde se alojan nuestros proyectos dentro de la máquina virtual y procedemos a crear dos proyectos de prueba:
cd Codelaravel newhomestead
Nota: como podemos observar, ya tenemos el instalador de Laravel en la máquina virtual.
Archivo Host
Para poder acceder a nuestros dominios es necesario editar el archivo host ubicado en:
Si jamás has editado el archivo en Windows, puede que te de problemas de escritura, así que deberás abrir el archivo con un editor y permisos de administrador. O copiar el archivo en tus Documentos, editarlo y ponerlo de nuevo en la ruta correspondiente.
Dentro de este archivo solo debemos agregar la IP de Homestead y el nombre del o de los dominios que hayamos configurado:
En nuestro navegador ya podremos ver nuestras aplicaciones accediendo a cualquiera de los dominios. Ya la máquina virtual se encarga automáticamente de darle los permisos correspondientes a bootstrap/cache y storage, algo que tendrías que hacer manualmente si trabajaras en un entorno local.
¿Dónde están mis archivos?
Para trabajar con los archivos de la aplicación puedes abrir el proyecto con el Editor o IDE de tu preferencia en la carpeta que hayas indicado en la propiedad folders. En mi caso, ~/Code para Ubuntu y C:\Proyectos para Windows. Al editar cualquier cosa, automáticamente estos archivos se sincronizan con los que tenemos en nuestra máquina virtual.
Agregar Nuevos Sitios
Para agregar nuevos sitios simplemente edita tu archivo Homestead.yaml como hiciste anteriormente, agregándolo en la propiedad sites. Cada vez que se haga esta operación debemos aprovisionar la máquina para que tome estos cambios, se realiza ejecutando dentro de tu terminal vagrant reload --provision.
Cambio mi .env por los datos de Base de Datos...
Y eso es todo. Ahora podemos usar Homestead para servir nuestras aplicaciones. Además nos ayuda a practicar como si estuviéramos dentro de un servidor real.
Homestead no es la única solución para esto, también tenemos otras herramientas como Docker, Laragon para Windows o Valet para Mac que nos crean entornos de desarrollo para Laravel. Te invito a que investigues sobre este tema, nos cuentes en la sección de comentarios y nos vemos en la siguiente clase donde trabajaremos con la API de autenticación.
En mi caso con tal de tener un ambiente lo más cercano a producción en Windows decidí utilizar Windows Subsystem for Linux y con el paso del tiempo aprendí como establecer un ambiente con Valet para Ubuntu, aquí dejo el link para la guía:
Vuenisimo jajaja yo uso Valet por simplicidad, jamas la he configurado en Ubuntu pero gracias muy bueno para tomarlo en. cuenta.
Homestead es bonito, pero docker es amor!
Tanto tiempo sufriendo por esta configuración y todo este dolor se va con una sola clase!!
IGUAL
Si, me parece terrible ...
Interesante aunque prefiero usar mi máquina local donde siempre trato de tener todo actualizado, la virtualización puede consumir recursos así que prefiero trabajar desde mi computadora:3
Totalmente de acuerdo
Igual pienso lo mismo, pero leeré un poco esto.
Creo que otra excelente alternativa es usar docker. Yo tengo un proyecto base el cual reutilizo y se hace muy rápido.
Comparto con ustedes lo que a mi me funciono para instalar vagrant y virtual box Yo tengo instalado ubuntu en mi computadora lo primero que hice fue
activar la virtualizacion en la computadora a traves de la BIOS.
INSTALACION VIRTUAL BOX
1.- De la pagina oficial de virtual box descargue birtual box para ubuntu 19.10 en mi caso yo tengo esa version (tu necesitarias descargar de acuerdo a tu version de ubuntu o distribucion de linux).
2.- Abri mi consola como root, escribi lo siguiente para haccerlo
sudo -i
me pidio contrasenia de mi server, se la puse y ya tengo mi consola como root.
3.- En la misma consola me fui a mi carpeta descargas que es ah[i donde se descargo virtual box
di un ls para ver que ahi estaba mi archivo.
4.- En consola escribi lo siguiente para instalarlo
dpkg -i aquiponeselnombrecompletodetuarchivoquedescargastedevirtualbox.deb
le di enter y se comenzo a instalar, listo ahora ya lo tienes instalado.
INSTALACION VAGRANT
1.- De la pagina oficial de vegrant descargue el achivo para debian que termina en .deb.
2.- Abri mi consola como root, escribi lo siguiente para haccerlo
sudo -i
me pidio contrasenia de mi server, se la puse y ya tengo mi consola como root.
3.- En la misma consola me fui a mi carpeta descargas que es ahi donde se descargo mi archivo
di un ls para ver que ahi estaba mi archivo.
4.- En consola escribi lo siguiente para instalarlo
dpkg -i vagrant_2.2.9_x86_64.deb
le di enter y se comenzo a instalar, listo ahora ya lo tienes instalado.
Despues segui los pasos que menciona el profesor.
Siempre le he huido a homestead, pero creo que ya es el momento.
Si no usa Valet, es muy facil y si en todo caso usas windows Laragon al rescate.
Yo siempre lo he evitado la verdad, siempre me da algun maldito fallo, y esta vez no iba a ser menos, me da que voy a seguir con mi entorno local que nunca me dio problemas. Por cierto fernando me puedes compartir una buena configuracion para hacer el entorno en Laragon plss.
le apuesto mas a docker, aunque laragon tambien es muy sencillo .
Hoy en dia uso Docker...hago lo mismo que Homestead pero mucho mas rapido y facil.
Si yo igual
En Mac uso Laradock con DNSMasq
Y próximamente migraré a Laravel Sail 🚀
por que fallara tantoooooooooo todo esto de opensource y lenguajes y cosas de desarrollo. es horrible querer tener eso estable para trabajar
monte todo nada de errores HASTA QUE
fui a navegar la URL, no abria el laravel para nada
entre al archivo a crear un nuevo sitio y organizar bien las rutas
le meti el comando vagrant reload --provision.
y ahora no me funciona ni el vagrant ssh no conecta ni bota errores ni nada, una tortura estas cosas
homestad es muy facil de implementar
supongamos que ya hice mi proyecto en unas de estas máquinas virtuales “donde está todo configurado”, como hago al momento de pasar esto a producción en un servidor real? si no sé qué cosas requiero tener instaladas. el término "entre otros" me dejo terriblemente desorientado
Todos hablan de docker pero como lo uso?
Si ussas Windows, entonces es init.bat. no entiendo esta parte a mi no me da
tienes que escribir start init.bat
No me funciono, continuare con Laragon que igualmente tengo problemas debido a que debo usar la version 7 para laravel 7 cuando estamos en laravel 11 >:-(
En windows es escribir start init.bat
Me parece interesante la forma de trabajar de Homestead. Fue un poco dificil al comienzo, normalmente trabajo con Docker, pero tampoco imposible.
Les recomiendo a los que tienen errores en Windows al momento de ejecutar comando "vagrant up", se pasen a la rama "release" funciona de una y recuerden tener la terminal en modo administrador o el Git Bash
Bueno les comento que yo siempre utilizo docker para el desarrollo