Instalación y configuración de Laravel Homestead, el entorno de desarrollo para Laravel basado en una máquina virtual completa, ideal para el desarrollo de aplicaciones usando el framework PHP.
En este artículo vamos a ofrecer las pautas para contar con el mejor entorno de desarrollo posible para Laravel, el más profesional, fácil de instalar y de mayor versatilidad, ayudándonos de la virtualización de la máquina de desarrollo y Vagrant.
La fórmula tiene el nombre de Homestead, una herramienta oficial creada por el equipo de Laravel para facilitar la vida a los desarrolladores que quieran usar este framework PHP para comenzar un proyecto rápidamente.
Si bien es cierto que desde que apareció Laravel Sail el equipo de Laravel le ha dado mucha relevancia a este entorno de desarrollo basado en Docker, muchos seguimos prefiriendo Homestead, porque nos permite controlar mejor el rendimiento y la velocidad de la compilación de los assets del lado del frontend, como los bundles Javascript. Homestead es un poco más pesado y ocupa más espacio en el disco, pero tiene sus ventajas.
El problema de Homestead es que es un poco más complicado y laborioso de configurar en esta guía te vamos a explicar todos los detalles, incluso algunas configuraciones avanzadas que te permitirán resolver prácticamente cualquier duda que puedas tener. Pero, por si acaso lo necesitas, en el artículo de instalación de Laravel te explicamos al principio diversas alternativas de entornos de desarrollo si es que ves Homestead demasiado avanzado para ti.
La idea es que los desarrolladores tengamos que implementar el menor número de configuraciones en nuestras máquinas y que con dos o tres comandos podamos conseguir todo lo que necesitaría el entorno de desarrollo más exigente.
Qué es exactamente Homestead
Es una "Box de Vagrant". Por si no lo sabes, Vagrant es una capa por encima de Virtualbox (o de otros sistemas de virtualización como VMWare) que nos sirve para crear entornos de desarrollo y las Box en su terminología son imágenes de sistemas operativos ya instalados. Generalmente vienen "peladas", tal como tendríamos el ordenador si hubiéramos acabado de instalar el sistema operativo en ese momento. O en algunos casos, como Laravel Homestead, ya configurados con distintos paquetes de software.
Homestead te instala software como: Ubuntu, PHP, HHVM, Nginx, MySQL, PostgreSQL, NodeJS, Redis y algunas librerías como Memcached, Laravel Envoy, Beanstalkd...
Por qué Homestead
Porque la comunidad de creadores de Laravel quieren acercarte al framework. Facilitarte no solo la entrada como desarrollador de Laravel, sino también proporcionarte el entorno de desarrollo más adecuado para acometer cualquier tipo de proyecto.
Realmente puedes contar con Laravel funcionando en un Xampp, Mamp o similares, pero si virtualizas tendrás varias ventajas como contar con un entorno mucho más parecido al de producción, independiente de otros proyectos con los que estés desarrollando y además el mismo sistema, con los mismos paquetes de software. No tiene sentido extenderse mucho en las ventajas de los entornos virtualizados, porque ya hemos hablado de ellos en otras ocasiones. Pero piensa además que puedes conseguir todo eso con la facilidad de lanzar unos pocos comandos para generar automáticamente toda la infraestructura perfectamente configurada.
Qué necesitas
Instalar VirtualBox como sistema de virtualización, o Parallels Desktop si lo prefieres (aunque en ese caso tendrías que instalar un plugin adicional llamado "Vagrant Parallels Provider").
Generalmente instalas primero el software de virtualización (VirtualBox o Parallels) y luego instalas Vagrant. Tanto VirtualBox como Vagrant son gratuitos y multiplataforma.
En los Mac con procesador M1 no está disponible en este momento VirtualBox, por lo que tendrás que usar Parallels. Por tanto, si tienes el chip M1 de Apple no te queda otra que pasar por caja, ya que Parallels Desktop es de pago. De todos modos, sinceramente, Parallels tiene mucho más nivel y facilidad de uso que VirtualBox, por lo que si necesitas usar virtualización merece bastante la pena. Sin embargo el software no es barato y encima necesitas las versiones "pro" o "enterprise" para poder usar Vagrant y solo se ofrecen mediante suscripción, por lo que todos los años tendrás que hacer un desembolso. La solución más económoca para usuarios Mac M1 sería Laravel Sail.
Si tienes Chip M1 el plugin de Vagrant que necesitas para Parallels se puede instalar con el comando:
vagrant plugin install vagrant-parallels
Box de Homestead
La "Box" de Vagrant es la imagen de la virtualización que se va a instalar en tu sistema. Existe una Box específica de Homestead. La puedes instalar a mano con los siguientes pasos, pero también puedes dejar que el proceso de Homestead lo haga automáticamente por ti, por lo que los siguientes pasos son opcionales.
Una vez instalados ambos programas (tu software de virtualización y Vagrant) se pueden descargar imágenes de Vagrant mediante comandos. Para descargar la caja "Box" de Homestead debes saber que existen dos box de Vagrant dependiendo de la arquitectura del procesador.
Box Vagrant Homestead para procesadores Intel
En Windows, Linux y Mac con chip de Intel, lanzarás el siguiente comando de consola.
vagrant box add laravel/homestead
Box Vagrant Homestead para procesadores Mac M1
En ordenadores MacOs con el chip M1 (Apple Silicon) usarás este comando:
vagrant box add laravel/homestead-arm
Ese comando lo podrás lanzar desde cualquier carpeta, desde el terminal de línea de comandos, claro está.
vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead
Instalar Homestead
El tercer paso sería instalar el propio Homestead. Para ello usaremos la box que acabamos de descargar y Vagrant. Pero necesitamos un archivo de configuración que se encuentra en Github que contiene toda la información de configuración que Vagrant necesitaría para generar y aprovisionar la máquina virtual para desarrollar con Laravel.
Para ello abrimos un terminal y nos situamos en nuestra carpeta de proyectos habitual y desde allí clonaremos el repositorio de Homestead con Git.
git clone https://github.com/laravel/homestead.git Homestead
git clone https://github.com/laravel/homestead.git proyecto-prueba
La estructura de carpetas que tengas tú en tu ordenador de momento es indiferente y responderá a tus propias preferencias. Lo que te interesa es todo lo que tiene el repositorio, que te vas a descargar con el comando "git clone". El lugar donde esté localizada la carpeta donde te descargas el repo de Homestead es lo de menos, por ejemplo muchas personas prefieren colocarla en la carpeta "Dropbox" para que cuando se realicen cambios en el proyecto se realicen copias de seguridad automáticas en la nube.
Después de haber realizado el clonado del repositorio de Laravel Homestead sería una buena idea hacer un checkout (para moverse a una rama de Git) a "release". Esta rama contiene el software en su última versión estable, que sería la más recomendada en todo momento:
cd Homestead
git checkout release
Dentro de ese repositorio clonado tenemos en un archivo bash con el nombre "init.sh" que tiene el código con los comandos para crear el archivo de configuración Homestead.yaml. Simplemente lo tienes que ejecutar.
Si estás en Mac o Linux lo harás con el comando:
bash init.sh
Si tu sistema operativo es Windows, entonces el comando para ejecutar init.sh es:
init.bat
Obviamente el comando "bash init.sh" lo debes ejecutar desde la ruta donde se encuentra el archivo init.sh, en la carpeta del repositorio que acabas de clonar. Verás que simplemente te da un mensaje de respuesta "Homestead initialized!". Eso quiere decir que ha ido bien y ha podido crear los archivos de configuración necesarios para los siguientes pasos.
Configuración de Laravel Homestead
Entre los arhivos de configuración que se crean al ejecutar el init.sh hay uno que necesitarás editar, llamado "Homestead.yaml".
Dependiendo de la versión de Homestead que tengas instalada el archivo Homestead.yaml puede estar en lugares distintos. Actualmente (estamos en Laravel 9 en este momento) lo encuentras en la misma carpeta de Homestead. En versiones antiguas lo encuentras en tu carpeta personal (la de tu usuario dentro de tu sistema operativo) y dentro de ella en la carpeta oculta ".homestead".
Si abres Homestead.yaml podrás encontrar los datos de configuración de la máquina virtual Homestead, el servidor de desarrollo virtualizado que vamos a crear, que incluye datos como la IP del servidor, las CPUs, memoria asignada, carpetas que se compartirán entre la máquina de desarrollo y el ordenador anfitrión (nuestro ordenador físico) y cosas así.
En un principio necesitamos tocar pocas cosas del Homestead.yaml, porque la mayoría ya se ha configurado automáticamente, acorde con nuestro sistema operativo gracias al archivo init.sh, pero podrás desear cambiar los siguientes item:
- El provider, que será "virtualbox" o "parallels".
- IP del servidor virtual, por defecto aparece ip: "192.168.10.10".
- Llave para la conexión SSH con la máquina virtual (ver información más abajo)
- Folders, que son las carpetas que vas a tener en tu sitio, mapeadas en dos direcciones, el servidor virtual y el ordenador local (luego te decimos cómo).
- Sites, para definir el nombre del sitio para el virtualhost.
Adicionalmente, yo personalmente hago una configuración menos generosa de recursos de la máquina Homestead y no suelo tener problema con ella. Si observas, hay dos configuraciones de memoria y cpu para la virtualización. Inicialmente vienen así:
memory: 2048
cpus: 2
Eso quiere decir que va a consumir 2 Gigas de tu memoria ram y 2 cpu. Podrías configurar perfectamente unos valores menores y, si fuera necesario, subirlo más adelante.
Sinceramente, tengo aplicaciones Laravel en producción atendiendo a decenas de usuarios concurrentes con menos recursos del sistema. En local, atendiendo a un único desarrollador, puede ser suficiente con una CPU y 512 de memoria. Si no fuera suficiente, siempre estás a tiempo de editar esos valores y aumentarlos. El único problema que puedes tener es que algunos procesos saturen la memoria. En ese caso recibirás un mensaje de memoria "exhausted". Especialmente Composer, si lo ejecutas desde la virtualización, consume bastante memoria.
Definir la Box de Vagrant para ordenadores Apple M1
Muy importante: Si tienes un Mac con Chip de Apple (Apple Silicon) necesitas definir una variable de configuración extra en el archivo Homestead.yaml, para informar de la box de Vagrant que se va a usar.
Además, debes tener en cuenta que el provider debe de ser "parallels".
provider: parallels
box: laravel/homestead-arm
Crear la llave de SSH
Esta es la llave para la conexión con el servidor virtual por línea de comandos. Si no tienes una la puedes crear. Desde Mac o Linux es tan sencillo como lanzar el siguiente comando:
ssh-keygen -t rsa -C "you@homestead"
Desde Windows la recomendación es usar el "Bash de Git" (el programa de terminal que te viene incorporado cuando instalas Git) y lanzar el mismo comando anterior. Aunque también podrías usar el popular software PuTTY y PuTTYgen.
Si tienes cualquier duda sobre el proceso de creación de llaves, tanto en Linux, Windows o MacOS, te recomendamos leer el artículo sobre Crear llaves ssh.
En el anterior comando no necesitas editar nada, lo pones tal cual. Enseguida verás que el programa que te genera la clave te pide la ruta donde va a colocar esta key generada. El propio programa te muestra una ruta predeterminada donde sugiere se coloquen las llaves. Podemos pulsar enter sin escribir nada para aceptar esa ruta o bien escribir cualquier otra ruta donde se generará la clave. Puedes poner lo que quieras, con tal que te acuerdes de la ruta que has seleccionado.
- Que te parezca bien la ruta donde te sugiere que va a crear las claves. En ese caso puedes apretar enter y listo. En mi caso la ruta donde se colocarían las claves de manera predeterminada es /Users/midesweb/.ssh/id_rsa. Por tanto se crearán los archivos id_rsa e id_rsa.pub en la carpeta /Users/midesweb/.ssh.
- Que escribas el nombre de un archivo simplemente, algo como "homesteadkey". En ese caso te creará las claves en el directorio donde estás situado cuando hiciste el comando ssh-keygen, archivos homesteadkey y homesteadkey.pub.
- Que que escribas una ruta absoluta, algo como /Users/midesweb/.ssh/nuevaclave, en cuyo caso te colocará la clave en esa ruta absoluta, tanto la clave privada /Users/midesweb/.ssh/nuevaclave como la pública /Users/midesweb/.ssh/nuevaclave.pub
El programa de generar las key te pedirá también insertar una frase como clave, que puedes poner la que desees. O bien una cadena vacía si quieres ahorrarte indicar una frase que te puedas olvidar. Como es solo para trabajar en local sería suficiente.
Como decíamos, una vez generada la clave lo que te interesa es saber la ruta donde se ha colocado, que tendrás que usar para configurar el archivo Homestead.yaml.
El lugar donde vas a tener que introducir la ruta de la clave será algo como esto:
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
Esa ruta es la que tienes que configurar según la localización de las llaves creadas. Generalmente si seleccionaste la carpeta predeterminada que sugería el comando ssh-keygen ni siquiera tendrías que editar nada. Si las claves las guardaste en otro lugar, entonces tendrás que indicarlo aquí. De todos modos, no tiene ninguna complicación, es saber la ruta donde está tu clave e indicarla en el Homestead.yaml.
Carpetas del servidor virtual y mapeo a las carpetas locales
Una de las características de los entornos con Vagrant es que hay determinadas carpetas del servidor virtual (invitado) que están mapeadas a directorios locales de tu máquina real (anfitrión). Esto te permite editar archivos de tu proyecto como los editarías en cualquier otra situación, con tus editores de código preferidos, trabajando en local como si lo hicieras con un sistema más tradicional tipo Xampp o Mamp, Wamp, etc. Las carpetas locales están enlazadas con las carpetas del servidor, por lo que no tienes que subir los archivos por FTP, SCP ni nada parecido. Cuando modifiques algún archivo, o crees archivos nuevos en tu carpeta local, automáticamente esos cambios estarán sincronizados en las carpetas enlazadas del servidor virtualizado. Podrías configurar tantas carpetas compartidas como necesites en tu proyecto, generalmente una por cada aplicación Laravel que estés desarrollando.
Ahora en el archivo Homestead.yaml tendrás que definir esa estructura de carpetas, que se adaptará a tus costumbres habituales. Como hemos comentado antes, tendrás una carpeta de tu ordenador donde guardas tus proyectos y seguirá siendo así. Por tanto, es simplemente guardar este proyecto en una carpeta en una ruta habitual para ti.
folders:
- map: ~/carpeta_de_proyectos/proyecto_x/codigo
to: /home/projects
En este lugar colocamos en "map" el valor de nuestra carpeta en el ordenador anfitrión y en "to" la ruta de la carpeta del ordenador virtualizado que vamos a crear con Vagrant y Homestead. La carpeta que estás indicando en "map", que corresponde con tu ordenador real, debería existir.
Ten en cuenta que en una máquina virtual de Homestead podrías mantener varios proyectos Laravel, por tanto no sería descabellado que usases una declaración Folders abierta a esa posibilidad, donde mapeas una carpeta de proyectos en el anfitrión a otra de proyectos en la máquina virtual.
folders:
- map: ~/carpeta_instalacion_homestead/proyectos/
to: /home/vagrant/proyectos/
De nuevo, no hay necesidad de colocar algo específico en la sección folders, sino que será tal como tú desees organizar las carpetas, tanto en el servidor Homestead como en tu ordenador local.
Definir la configuración de los sitios que vamos a albergar en esta máquina Homestead
Nos queda un valor que configurar, que es el nombre del host virtual que nos va a configurar Homestead en esta máquina virtual que estamos a punto de crear. Este host virtual o "virtualhost" lo usaremos para entrar en el proyecto desde un navegador, con un nombre de dominio, como si fuera un servidor remoto. Lógicamente ese dominio solo estará disponible desde tu ordenador y tendrás que configurar el conocido archivo "hosts" para asociar la IP del servidor al nombre de dominio virtual.
sites:
- map: homestead.dw
to: /home/projects/mi_proyecto/public
En este mismo artículo, más para el final, encuentras una descripción detallada sobre cómo configurar varios proyectos de Laravel en una misma instalación de Homestead, con el código del Yaml de una configuración real.
Definir las versiones de PHP
Si usas Homestead 6 o superior tienes la posibilidad de definir la versión de PHP que quieres usar para cada proyecto.
sites:
- map: site-demo.test
to: /home/vagrant/site-demo/public
php: "8.0"
Además, haciendo uso de la consola de Homestead puedes definir qué versión de PHP quieres usar por línea de comandos, simplemente indicando el comando de esta manera:
php8.0 artisan -V
Definir los virtualhost en el archivo hosts
En este caso en "map" colocamos el nombre de dominio para el virtualhost y en "to" indicamos la carpeta del servidor virtual donde va a estar el "document root". Si te fijas, ese document root debe colgar de la carpeta que tienes en la máquina virtual que has enlazado con tu carpeta real, de ese modo podrás editar en local los archivos de tu proyecto que se servirá desde el ordenador virtual.
Tu archivo hosts tendrás que editarlo agregando esta líneas, que quedará más o menos de esta forma:
192.168.10.10 homestead.dw
Aunque lógicamente, tendrás que poner la IP que hayas definido en el campo IP de Homestead.yaml y el nombre de dominio que hayas definido en los "sites", en el campo "map".
Lanzar la máquina virtual
Una vez configurado el Homestead.yaml tienes que lanzar la máquina virtual, es decir, tendrás que ponerla en marcha, con el conocido comando de Vagrant:
vagrant up
Ese comando lo tienes que lanzar desde la carpeta donde has puesto el repositorio de Homestead, que clonaste con Git. La primera vez que se ejecute va a tardar un poco, porque tiene que instanciar y configurar toda la máquina, pero luego iniciar la máquina virtual será muy rápido, también con el comando "vagrant up".
Por tanto, si en algún momento haces un "vagrant up" y te pide hacer un "vagrant init" es que estás haciendo el "vagrant up" desde una carpeta incorrecta. En ese caso fíjate que estés situado en el repositorio de Homestead que has clonado. En esa carpeta debería haber un Vagrantfile, ya que es uno de los archivos del repositorio clonado.
Una vez lanzada la máquina virtual podríamos hacer una primera prueba accediendo a la IP del servidor virtual con tu navegador.
http://192.168.10.10/
(Ojo, la URL podría ser otra si tocaste en el Homestead.yaml el dato ip: "192.168.10.10"
. Si no es esa, será la IP que hayas configurado en tu caso)
De momento no veremos nada, pero al menos el navegador no deberías recibir tampoco el típico error del navegador para informar que el host no ha sido encontrado. En mi caso aparece el mensaje "No input file specified.". Esto es porque no tenemos todavía ningún archivo en el servidor, como código del proyecto, así como tampoco se ha creado la carpeta "public" que es "document root", o aquella carpeta raíz que hayas configurado en el yaml.
Ahora se trataría de colocar un archivo dentro de la carpeta que has definido como raíz de tu dominio en el campo "to:" de la configuración "sites". Recuerda que esa carpeta está enlazada desde el servidor virtual con una ruta en tu directorio de los proyectos, tal como se ha configurado.
Puedes colocar un index.php con un "Hola mundo" para probar. Lo colocarás en una ruta tal como lo hayas configurado en tu caso, siguiendo los valores definidos en este artículo nos quedaría una como esta:
Ordenador vitualizado:
/home/projects/mi_proyecto/public
Equivalente en el host anfitrión (ordenador real):
~/carpeta_de_proyectos/codigo/mi_proyecto/public
Ahora accediendo a la IP del servidor podrías encontrar tu index.php. Además, si has podido configurar correctamente tu virtualhost, podrás acceder a partir del nombre del dominio creado en tu máquina.
http://homestead.dw/
Con esto es todo, de momento tenemos nuestra máquina funcionando, lista para instalar Laravel, pero aún nos queda toda la instalación del framework PHP Laravel y algún trabajo más para comenzar a desarrollar. Lo veremos en próximos artículos.
Antes de acabar sería solo comentar que tenemos un #programadorIO sobre Laravel Homestead que amplía la información relatada en este artículo. Recuerda también que puedes encontrar la documentación oficial de Homestead para Laravel 5 en este enlace.
Código completo del Homestead.yaml
En los comentarios del artículo nos han pedido reproducir el código completo de un archivo Homestead.yaml. La verdad es que no lo habíamos hecho porque las configuraciones dependen mucho de las preferencias, costumbres, sistemas operativos y rutas de cada uno, por lo que no sería adecuado hacer un "copia-pega" del archivo. Para evitar confusiones y posibles copias literales lo habíamos dejado pasar. No obstante, para que sirva de referencia para comparar vuestros archivos con los nuestros, dejo aquí el código completo.
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/html/Homestead/codigo
to: /home/projects
sites:
- map: homestead.dw
to: /home/projects/homestead/public
- map: testlaravel.com
to: /home/projects/testlaravel/public
databases:
- homestead
variables:
- key: APP_ENV
value: local
# blackfire:
# - id: foo
# token: bar
# client-id: foo
# client-token: bar
# ports:
# - send: 93000
# to: 9300
# - send: 7777
# to: 777
# protocol: udp
Mantener varios proyectos de Laravel en una instalación de Homestead
Estás trabajando con Laravel y te has decantado, tal como se recomienda, trabajar en el entorno Homestead. Tienes una máquina virtual con una instalación de Laravel, pero quieres manejar diferentes proyectos, de manera independiente, reutilizando la misma máquina virtual, para no tener que gastar mayor espacio en disco o tiempo en crear una máquina nueva.
Esta es una situación muy común y que tiene una sencilla solución, simplemente a través de la configuración del archivo Homestead.yaml, creando distintos host para cada proyecto, asociados a otras carpetas del servidor.
Obviamente, para llegar a este artículo tienes que saber Qué es Homestead y saber cómo instalar Laravel. Lo que vamos a aprender de nuevo es algo muy sencillo, simplemente configurar varios host virtuales para cada proyecto.
Configuración de "sites" en Homestead.yaml
Recuerda que el archivo Homestead.yaml" está en la carpeta ".homestead" que está situada en la raíz de tu usuario. Tanto en Windows, Linux o Mac: "~/.homestead".
~/.homestead
" físicamente estará en una ruta del disco donde tengas instalado Windows. Si tu usuario se llama "carlos" y has instalado Windows en el disco C, tu carpeta estaría físicamente en una ruta absoluta como esta C:\Users\carlos\.homestead. Recuerda que si usas un terminal medianamente bueno como el que te viene con Git (git bash) sí que te reconocerá las rutas comenzando con ~/ como rutas a la carpeta de tu usuario Windows.Dentro del Homestead.yaml está el epígrafe "sites", sobre el que podemos construir cualquier número de hosts virtuales (virtualhost en la terminología de servidores, que significa que el servidor web reconocerá esa carpeta como un sitio aparte, al que se accederá por un nombre de dominio independiente).
Si queremos crear varios host independientes, uno para cada proyecto Laravel, simplemente tenemos que listar ese número de virtualhost tal como sigue:
sites:
- map: proyecto1.local.com
to: /home/projects/proyecto1/public
- map: proyecto2.local.com
to: /home/projects/proyecto2/public
- map: proyecto3.local.com
to: /home/projects/proyecto3/public
Podemos tener tantos virtualhost como queramos. Luego se trata de crear las carpetas mapeadas a cada uno de esos host virtuales en la máquina Homestead, algo que seguramente harás solamente cuando llegue el paso de la instalación del framework Laravel 5 tal como se explicó anteriormente.
Te voy a dejar aquí una configuración real de folders y sites que tengo yo en un ordenador de desarrollo, donde tenemos varios sitios con sus correspondientes carpetas mapeadas.
folders:
- map: ~/sites/eit/eitv2
to: /home/vagrant/eit
type: "nfs"
- map: ~/sites/dw/dw2019
to: /home/vagrant/dw
type: "nfs"
- map: ~/sites/guiarte/gglobal
to: /home/vagrant/gglobal
type: "nfs"
- map: ~/sites/realtimeserver
to: /home/vagrant/realtimeserver
type: "nfs"
sites:
- map: eit.test
to: /home/vagrant/eit/public
- map: dw2019.test
to: /home/vagrant/dw/public
- map: gglobal.test
to: /home/vagrant/gglobal/public
- map: realtimeserver.test
to: /home/vagrant/realtimeserver/public
Aprovisionar los cambios en el archivo Homestead.yaml
Si simplemente cambias el archivo Homestead.yaml las nuevas configuraciones no funcionarán, ni tan siquiera si reinicias la máquina virtual. Por ello tendrás que hacer un paso adicional para aprovisionar de nuevo la máquina atendiendo a los nuevos valores de configuración.
Eso se consigue con un comando como el que sigue:
vagrant reload --provision
Ese comando para la máquina virtual y luego la reconfigura, tomando los nuevos datos indicados en el archivo de configuración. Luego la vuelve a encender ya con las nuevas configuraciones. No hace falta que la máquina virtual esté parada.
Si tienes algún problema con ese comando prueba a ejecutar antes "vagrant provision".
vagrant provision
vagrant reload --provision
Volver a configurar el archivo hosts
También podrá resultar obvio, pero hay que comentar que, inmediatamente después de crear los nuevos virtualhost y antes de poder acceder a ellos por los nombres de dominio configurados, deberás editar tu archivo hosts para agregar la IP del servidor asociada al nuevo nombre de dominio que se está definiendo. Colocarás una línea como esta:
192.168.10.10 proyecto2.local.com
También ojo con esa línea porque tu máquina Homestead podría tener otra IP distinta si lo editaste en el archivo Homestead.yaml y lógicamente el nombre del dominio para el virtualhost también será otra, que hayas configurado en tu archivo yaml.
Con eso es todo! en lugar de crear máquinas nuevas para colocar proyectos distintos de Laravel, lo que generalmente harás es crear nuevos host virtuales sobre la misma máquina, así compartes el mismo entorno de desarrollo para diferentes proyectos Laravel 5.
Es una situación bastante común, pero no implica necesariamente que lo tengas que hacer así. Para un proyecto, por cualquier motivo, podrías preferir crear una máquina virtual totalmente independiente, creando una nueva instancia de Homestead, en lugar de reutilizar la que ya tenías.
Conclusión sobre Laravel Homestead
Laravel Homestead es una solución muy cómoda y profesional para trabajar con Laravel. Permite tener un entorno de desarrollo configurado rápidamente en una máquina Linux, que seguramente sea el ambiente donde la aplicación va a estar en producción.
La única desventaja de Homestead con respecto a otros entornos de desarrollo más sencillos es quizás que las máquinas virtuales consumen bastantes recursos, como RAM. en tu ordenador de desarrollo pero la verdad es que con 512Kb de ram para la máquina virtual y un único core puedes ejecutar perfectamente tus proyectos Laravel. Si te lo puedes permitir en tu ordenador, es una excelente alternativa.
Hemos aprendido a trabajar con Homestead y a configurar la mayoría de los detalles que necesitarás en los proyectos. Además hemos aprendido a usar una única máquina virtual para todos los proyectos, para ahorrar espacio en disco no tener la incomodidad de tener que arrancar o detener las máquinas virtuales cuando necesitas cambiar de proyecto.
Finalmente, cabe decir que Homestead no es la única opción como entorno de desarrollo para Laravel. Existen otras alternativas bastante interesantes como Sail para usar Docker, o incluso si estás en Mac tienes Valet que es un entorno especialmente ligero.
Carlos Ruiz Ruso
Consultor tecnológico para el desarrollo de proyectos online especializado en Wo...