Anteriormente había escrito como podemos aprovechar las ventajas de PuPHPet para construir de forma rápida ambientes de desarrollo enfocado en PHP. PuPHPet sigue siendo un gran proyecto y actualmente la cantidad de configuraciones que podemos generar a través de su aplicación web es impresionante.

Otra plataforma que podemos adoptar como ambiente de desarrollo para PHP es Laravel Homestead. Homestead es el virtual box oficial para crear aplicaciones utilizando el framework Laravel. Esta máquina virtual posee todo lo necesario para el desarrollo local de aplicaciones web e incluye PHP, HHVM, Nginx, MySQL y más (hasta NodeJS).

Existen un sin número de tutoriales de como instalar Homestead, inclusive unos de los puntos fuertes de usar un producto derivado de Laravel es su extensa y muy elaborada documentación. En este caso vamos a enfocarnos en como configurar Homestead en Windows.

Vamos a definir cuáles son los pre-requisitos. Antes de usar Homestead necesitamos instalar, Virtual Box, Vagrant y Git. Prácticamente vamos a ejecutar el instalador de cada una de las aplicaciones ciegamente instalando todo y aceptando las propiedades y parámetros que ofrecen como estándar. Estas 3 herramientas proveen las bases para poder levantar el vm de Homestead sin problemas.

windows-homestead-01

Una vez terminen las instalaciones vamos a confirmar que las herramientas hayan instalado sin muchos contratiempos. Vamos a utilizar el Git Bash que incluye Git y verifiquemos que hayamos instalado Vagrant escribiendo:

$ vagrant -v

La version que estoy usando es Vagrant 1.7.2. Hagamos la misma verificación para Virtual Box.

$ "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" -v

Para Virtual Box estaremos usando la versión 4.3.12r93733.

Ahora vamos a seguir las instrucciones que se encuentran en la documentación de Homestead. Lo primero será añadir el box de HomesteadVagrant.

$ vagrant box add laravel/homestead

Este comando te preguntará que tipo de proveedor deseas usar,

1) virtualbox 2) vmware_desktop

Aquí es donde se descarga la máquina virtual a nuestra laptop o PC. Escojamos le opción de virtualbox y dejemos que el archivo baje. En una conexión decente esta acción puede tomar hasta 5 minutos.

Para comprobar que el box ha bajado correctamente lo verificamos listando los box que tenemos configurados en Vagrant. Ahí debe aparecer laravel/homestead.

$ vagrant box list
laravel/homestead       (virtualbox, 0.2.5)
precise32               (virtualbox, 0)
trusty64                (virtualbox, 0)

Ahora vamos a clonar el repositorio de Homesetead.

git clone https://github.com/laravel/homestead.git MyProject

Esto creará un folder MyProject que será el root de nuestros archivos. Vamos a entrar al folder MyProject y de ahí vamos a ejecutar:

bash init.sh

Este script creará el archivo Homestead.yaml en c:\.homestead. El archivo Homestead.yaml contiene la siguiente configuración:

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

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Code
      to: /home/vagrant/Code

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public

databases:
    - homestead

variables:
    - key: APP_ENV
      value: local
...

Aquí es donde cambiaremos un poco las cosas para que adaptarlas a Windows. Lo primero que vamos a modificar es el SSH key. Si has usado Github de seguro ya tienes una de lo contrario obtener una a través de Git Bash es fácil. Solo necesitas copiar el siguiente código en el Git Bash:

ssh-keygen -t rsa -C "tu-nombre@homestead"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Jaime/.ssh/id_rsa):
...

El lugar en donde guardes la llave es importante porque luego lo vamos a utilizar para configurarlo en nuestro archivo Homestead.yaml. Es importante destacar que el archivo Homestead.yaml utiliza la notación de Unix para definir la localidad de los archivos. El uso de ~/ indica que este será nuestro home o root path. En Windows podemos encontrar nuestro equivalente verificando el path que contiene la variable HOME. Averiguar es muy fácil, vamos a System >> Advanced system settings >> Environment Variables…

windows-homestead-02Una vez aparezca la ventana de Environment Variables buscamos la variable HOME.

windows-homestead-03

En mi caso vemos que el path definido en la variable HOME apunta a C:\Users\Jaime. Por el contrarios, si deseamos utilizar al path completo tenemos que invertir los \ por /. Dicho esto los siguientes comandos son equivalentes:

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa
authorize: C:/Users/Jaime/.ssh/id_rsa.pub

keys:
    - C:/Users/Jaime/.ssh/id_rsa

Por último vamos a cambiar la configuración del parámetro map para apuntar al folder MyProject,

folders:
    - map: ~/Documents/Code/MyProject
      to: /home/vagrant/Code

Una vez hayas configurado por completo el archivo Homestead.yaml puedes ejecutar el comando vagrant up desde el folder MyProject y listo.
Ahora desde tu navegador puedes visitar la dirección de ip http://192.168.10.10 y si ves la siguiente oración, «No input file specified.» es que todo está listo para comenzar el desarrollo o para instalar Laravel.