Comparte en Facebook Twitter Google+

Cuando trabajamos con Laravel Homestead, la mayor parte del tiempo accedemos a los proyectos sólo mediante nuestra PC modificando el archivo de hosts y así cuando escribimos en el navegador la URL definida en dicho archivo (virtualhost), Nginx nos muestre nuestro proyecto desde la máquina virtual.

Sin embargo, en ocasiones, queremos mostrar nuestro proyecto a otras personas que forman parte del equipo, ya sean diseñadores, otros programadores, líderes de proyecto o incluso a los clientes que desean ver algunos avances. Por lo que en este tutorial veremos cómo podemos configurar Homestead para compartir el acceso de nuestros proyectos a quiénes se encuentren dentro de la misma red local (LAN).

Acceso mediante modificación del archivo Hosts de otra PC

Es la forma más básica y fácil si queremos que solo una o dos computadoras puedan acceder a nuestro proyecto en Homestead.

Si iniciamos Homestead y ejecutamos $ ifconfig, nos aparecerán las siguientes interfaces de red:

interfaces 1

Ninguna de estas interfaces son accesibles mediante LAN, por lo que hay que configurar vagrant para que inicie una interfaz abierta a nuestra LAN.

Primero, buscáremos el archivo homestead.rb que se encuentra en la carpeta Homestead/scripts. Si instalaste Homestead siguiendo la documentación de Laravel, esta carpeta debe estar en tu directorio Home en OSX, Linux o en tu carpeta de Usuario de Windows. Si instalaste con composer el archivo está ubicado en .composer/vendor/laravel/homestead/scripts/homestead.rb

Carpeta Homestead en Windows

Carpeta de scripts

homestead.rb

Tendremos dos formas de configurar el acceso desde LAN, dependiendo del archivo homestead.rb.  Entonces al abrirlo, buscáremos la configuración de red.

En la primera forma puede estar de la siguiente manera:

Ésta es la configuración usual de Homestead para acceder e ingresar mediante SSH. Lo que haremos será agregar una nueva interfaz en modo puente para que la máquina virtual pueda acceder a nuestra LAN.

Si tu archivo si contiene # Configure Additional Networks,  no hay que modificar nada en ese archivo.  En vez de ello, hay que modificar el archivo Homestead.yaml. Puedes ejecutar $homestead edit o abrir el archivo directamente de ./homestead/Homestead.yaml, que se encuentra en tu carpeta de Usuario o Home.

Agregamos la sección que dice #Acceso a LAN para que cuando ejecutemos homestead up configure una nueva interfaz con la IP asignada.

Por otro lado, la segunda forma, si tu archivo homestead.rb no contiene la línea # Configure Additional Networks, hay que agregar manualmente la interfaz de la siguiente manera:

Así, al cargar la máquina virtual se inicie la interfaz número 3 con nuestra IP. En este ejemplo, la IP de nuestra interfaz es 192.168.1.200; debe ser una IP estática para que cuando modifiquemos los archivos de Host, no cambie la IP y tengamos que volver a modificar el archivo, por lo que hay que configurar nuestro DHCP para que nos de una IP estática.

Realizamos homestead provision y volvemos a ejecutar $ ifconfig. El resultado debe ser el siguiente:

Interfaces 2

Copiaremos la dirección MAC de la interfaz para configurar nuestro router.

MAC

En mi caso, me pide el nombre para identificar la IP estática, la MAC de la interfaz y la IP que quiero que tenga. La configuración varía dependiendo del router y firmware.

router

Una vez listo, modificaremos el archivo host de otro dispositivo, ya sea Linux, OSX o Windows y agregaremos la siguiente entrada:

super

Finalmente, accedemos a la URL de nuestro proyecto.

Proyecto

Como se puede ver, nuestro sitio es accesible desde otro dispositivo, en este caso, OSX. Mientras que la máquina virtual de Homestead está siendo ejecutada sobre Windows.

Acceso mediante un servidor DNS

Otra forma de poder acceder a nuestros sitios en Homestead es configurándolo para que trabaje como un servidor DNS, en este caso, podemos crear una máquina virtual con Ubuntu 14.04 descargando el ISO y utilizando virtuabox, o podemos usar un box de vagrant. La elección es tuya.

Iniciamos nuestra máquina y procedemos a actualizar los paquetes instalados.

Utilizaremos BIND (Berkley Internet Naming Daemon) para que funcione en nuestra VM como servidor DNS.

Una vez instalados, iremos a /etc/bind y editaremos:

Agregaremos la información de los dominios para el servidor:

La primer “zone” define nuestro dominio de búsqueda para cuando ingresemos la URL de nuestro proyecto. La segunda es para cuando realicemos una búsqueda inversa.
Guardamos el archivo y ahora copiaremos el archivo db.local:

Abriremos db.superproyecto e ingresaremos la información de donde se localiza este dominio.

En vez de localhost, lo reemplazaremos con nuestra URL, en este caso superproyecto.app. En el registro NS pondremos nuevamente la URL y en el registro A la IP de nuestra máquina Homestead.

Ahora modificaremos el archivo resolv:

De forma que quede una sola línea con la IP de nuestro servidor.

Para realizar la búsqueda inversa, copiaremos el archivo db.127 para actualizarlo con la información inversa:

El resultado será el siguiente:

Una vez terminado, tenemos que reiniciar el servidor DNS. Por lo que ejecutamos:

Ahora, solo tenemos que modificar en nuestros dispositivos o en nuestro router la IP del servidor DNS que resolverá las URLs que ingresemos.

En windows:
dns

En OSX:
DNS 2

Antes de acceder a nuestro sitio, tenemos que borrar el caché DNS de nuestra PC. En Windows podemos ejecutar ipconfig /flushdns, en caso de no funcionar, podemos reiniciar nuestra interfaz de red.

sitio

Existen otros métodos como http://xip.io/ o https://ngrok.com/ pero estos están más enfocados a acceso desde fuera de la LAN (internet) a Homestead. También es posible utilizar vagrant share para compartir nuestros sitios web.

Regístrate hoy en Styde y continua mejorando tus habilidades: ver planes.

Lección anterior Como hacer "debug" usando Xdebug, PhpStorm y Homestead