Vagrant, Laravel

Cuando se trata de entornos locales de desarrollo, tenemos una serie de opciones, podemos hacer uso de un stack local como MAMP, LAMP O WAMP pero dependiendo de las necesidades del proyecto esta podría no ser la mejor opción ¿Qué sucede cuando se requiere instalar Memcached? ¿Qué pasa si se requiere de alguna extensión especial? ¿Qué pasaría si se requiere que todos los miembros de un equipo de desarrollo utilicen un entorno idéntico? Dado que las utilidades «todo en uno» quitan mucho de la complejidad, este tipo de instalaciones puede llegar a ser más un problema que un beneficio.

Es aquí cuando Vagrant y Homestead llegan al rescate. Como parte de la misión de Laravel de ayudar al programador desde el desarrollo hasta la implementación, Taylor Otwell creó Homestead, un box de Vagrant, permite crear un ambiente de desarrollo completo y profesional en pocos minutos.

Hace unos días se hizo pública la nueva actualización de Homestead, la versión 2.0, y hoy, en este post, vamos a guiarlos paso a paso sobre cómo implementarla.

Antes de empezar, quisiera recomendarles que lean el siguiente post en el cuál podrán ver más detalles sobre lo que es Homestead y todas las herramientas que provee.

Como podemos ver en el post anterior, lo que necesitamos para empezar con Homestead es tener instalado Vagrant y Virtualbox en nuestro sistema (sea cual sea el sistema operativo) y una vez instalados tenemos que agegar el box de homestead desde la consola con el siguiente comando.

vagrant box add laravel/homestead

Una vez instalado nuestro box podemos proceder a la instalación de Homestead la cual, ahora en su versión 2.0, se instala como una herramienta CLI usando el comando composer global

composer global require "laravel/homestead=~2.0"

Si no tienes instalado Composer aquí te explicamos cómo instalarlo en Windows y Ubuntu

Una vez que hayamos instalado la herramienta CLI de homestead debemos agregar al PATH la ruta ~/.composer/vendor/bin para poder hacer uso de el comando homestead en cualquier parte que nos encontremos dentro de la terminal. Si siguieron instalación de Composer y Laravel en Ubuntu 14 LTS ya deben tener esa ruta dentro del PATH así que no hay necesidad de hacerlo de nuevo.

En caso de que no hayan seguido el tutorial antes mencionado se deben correr los siguientes pasos para:

Agregar la ruta o PATH de Composer en Linux:

  1. Abre una ventana de terminal
  2. Escribe “sudo nano /etc/environment” en la ventana de terminal y pulsa «Intro».
  3. Escribe tu contraseña en el cuadro de contraseña y pulsa «Intro».
  4. Edita el valor de la variable de ruta en la pantalla del editor de texto que aparece. Separa cada directorio con «:». El sistema comprobará primero los directorios en la parte izquierda de la variable de ruta.
  5. Verifica que la línea de ruta tenga el siguiente formato:
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
  6. Agrega esta nueva línea al final del archivo, para añadir Composer al path:
    PATH="$HOME/.composer/vendor/bin:$PATH"
  7. Pulsa «Ctrl» y «O» al mismo tiempo y pulsa «Intro» para guardar el archivo.
  8. Pulsa «Ctrl» y «X» al mismo tiempo para cerrar el editor de texto.
  9. Escribe “source /etc/environment” en el terminal y pulsa «Intro» para aplicar los cambios en el archivo /etc/environment y así no tendrás que cerrar y volver a abrir el terminal

Agregar la ruta o PATH de Composer para Mac:

  1. Abre una terminal
  2. Escribe el comando:
    nano ~/.bash_profile
  3. Al final del archivo coloca lo siguiente: 
    export PATH="$HOME/.composer/vendor/bin:$PATH"
  4. Presiona Control + X luego «Y» y luego Enter para grabar el archivo
  5. Escribe “source ~/.bash_profile” en el terminal y pulsa «Intro» para aplicar los cambios en el archivo /etc/environment y así no tendrás que cerrar y volver a abrir el terminal

Una vez que hayamos instalado la herramienta CLI Homestead hay que correr el comando init para crear el archivo de configuración Homestead.yaml

homestead init

El archivo Homestead.yaml será colocado en el directorio oculto ~/.homestead. Si estás usando un sistema Mac o Linux puedes modificar el archivo Homestead.yaml corriendo el comando homestead edit en tu terminal

homestead edit

Nota: Si usas Ubuntu 14.04 LTS es posible que al correr ese comando te salga un error que diga couldn’t get a file descriptor referring to the console, esto es debido a que dentro de la instalación de homestead es necesario modificar el archivo EditCommand.php en la carpeta ~/.composer/vendor/laravel/homestead/src y cambiar en la línea 30 la parte que dice open y ponerla como xdg-open para poder abrir el archivo Homestead.yaml y poder editarlo (yo en mi caso puse subl en lugar de xdg-open para poder abrir el archivo desde sublime).

Una vez que corramos el comando para editar el archivo se abrirá de la misma manera que se hacía de la manera tradicional, con la diferencia de que ahora podremos indicar desde nuestro archivo de configuración cuáles van a ser las bases de datos que queramos utilizar, así como las rutas de nuestras llaves SSH, la carpeta donde tendremos nuestros proyectos y las rutas que utilizaremos, en la siguiente imagen les dejo un ejemplo de cómo puede quedar

Homestead2

El ejemplo anterior muestra una prueba de cómo puede ser configurado nuestro archivo de configuración Homestead.yaml, en el cuál se indica la ruta de las llaves SSH, las carpetas que se sincronizarán con nuestra máquina virtual, los sitios que vamos a utilizar e incluso las bases de datos.

Si ya hemos utilizado algún manejador de versiones anteriormente como Github no es necesario generar una llave SSH ya que deberíamos tenerlas, en caso contraro debemos generar una llave nueva, para eso debemos ir a la consola y correr el siguiente comando (reemplaza you@homestead con tu e-mail propio)

ssh-keygen -t rsa -C "you@homestead"

Después debemos configurar nuestros directorios, los cuáles serán sincronizados con nuestra máquina virtual, por defecto nos indica que el directorio que se sincronizará es ~/Code pero podemos colocarle ~/Projects o el nombre que queremos. En dicho directorio es donde se guardarán todos los proyectos.

Luego podemos configurar los sitios que utilizará Nginx, nuevamente refiriéndonos al ejemplo podemos ver que tenemos 3 sitios, ahí podemos indicar la ruta que utilizaremos y la ruta donde estará alojado nuestro proyecto dentro de la máquina virtual, esta es la manera adecuada de agregar más sitios:

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

Debemos tener muy en cuenta que la ruta que queramos utilizar la debemos agregar en nuestro archivo /etc/hosts asignandole la ip 192.168.10.10 (o la ip que esté indicada al inicio de nuestro archivo Homestead.yaml)

Ya que tengamos nuestro archivo de configuración listo, lo guardamos y vamos de vuelta a la consola para poder iniciar nuestra máquina virtual Homestead, para ello es necesario correr el siguiente comando.

homestead up

Una vez hecho esto podemos conectarnos a homestead para poder crear los proyectos que queramos, instalar PHPMyAdmin, instalar características especiales, etc. Todo esto conectándonos por medio de nuestra llave SSH a la máquina virtual, para esto dentro de la consola debemos ejecutar el comando para poder conectarnos, cabe destacar que no debemos estar en ninguna ruta en particular ya que es un comando global y podemos correrlo en cualquier directorio que queramos, el comando es el siguiente:

homestead ssh

La verdad es una actualización que a mi en lo personal me pareció muy interesante e incluso pienso que puede ser más sencillo de aprender para nuevos usuarios, ustedes decidan, hagan pruebas, pueden configurarlo a su gusto y hacer tanto como quieran y dejarnos sus comentarios aquí o en mi cuenta de twitter @dimitri_acosta

En próximos tutoriales les daremos aún más tips para dominar Homestead.

Saludos y éxitos

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior 5 tips interesantes para Vagrant y Laravel Homestead Lección siguiente Instala phpMyAdmin en Laravel Homestead