Instalación, configuración y uso de Homestead

Clase 4 de 33Curso Avanzado de Laravel

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.

https://www.virtualbox.org/wiki/Downloads https://www.vagrantup.com/downloads.html

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.

git clone <https://github.com/laravel/homestead.git> Homestead

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:

ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox

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.pub keys:

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: ~/Code to: /home/vagrant/Code

En el caso de Windows, yo la ubique de la siguiente forma:

folders: - map: C:\\Proyectos to: /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.

sites: - map: laraveles.app to: /home/vagrant/Code/laraveles/public - map: platzi-api.test to: /home/vagrant/code/platzi-ecommerce-api/public

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 Code laravel new homestead

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:

Ubuntu: nano /etc/hosts Windows: C:\\Windows\\System32\\drivers\\etc\\hosts

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:

192.168.10.10 laraveles.app 192.168.10.10 platzi-api.test

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.

Para más información visita Laravel - Homestead

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.