Ya sabemos que el principal objetivo de Laravel es hacerte mucho más fácil, rápido y especialmente divertido el desarrollo de tus ideas y aplicaciones. Por otra parte, ya te explicamos las ventajas de utilizar Vagrant, un programa que facilita la administración de máquinas virtuales de desarrollo
Hoy les presentamos el siguiente paso de usar Vagrant, se llama Homestead y viene de la mano del mismo desarrollador de Laravel, Taylor Otwell, así que no tienes nada que temer, Taylor quiere que seas feliz y después de tener Homestead instalado, lo serás.
Homestead combina Vagrant + Laravel creando así la unión perfecta para empezar a desarrollar tu aplicación web rápidamente. Homestead es básicamente una caja o ‘box’ en la terminología de Vagrant que trae instalado todo el software necesario para programar una aplicación en Laravel, entre ellos están:
- Ubuntu 14.04
- PHP 5.6
- HHVM
- Nginx
- MySQL
- Postgres
- Node (With Bower, Grunt, and Gulp)
- Redis
- Memcached
- Beanstalkd
- Laravel Envoy
- Fabric + HipChat Extension
Si no conoces algunos no te preocupes, es para aplicaciones más complejas o que necesitan mejor rendimiento.
Requisitos
Homestead necesita Vagrant 1.6 y es compatible con cualquier software de virtualización.
Como nota importante si vas a utilizar Vagrant en Windows necesitas activar la virtualización (VT-x) en la configuración de la BIOS.
Instalación y configuración
Instalar Vagrant
Instalar Vagrant es muy sencillo, sólo necesitas ejecutar los instaladores de VirtualBox y de Vagrant (vienen para Windows, Linux y Mac).
En este post anterior te explicamos todo sobre Vagrant.
Descargar la caja de Vagrant
Ya es claro que Homestead funciona sobre Vagrant así que una vez lo tengan instalado podrían ejecutar el siguiente comando:
vagrant box add laravel/homestead
Éste comando descargará e instalará la caja oficial de Homestead, la descarga son aproximadamente 700mb pero lo hace rápidamente (según tu Internet), así que no desesperes que ya viene lo mejor!
Clonar el repositorio de Homestead
Una vez hayas descargado correctamente la caja de Vagrant debes clonar el repositorio de Homestead desde Github con el siguiente comando:
git clone https://github.com/laravel/homestead.git Homestead
Es recomendable que lo clones en una carpeta de fácil acceso.
Establecer llave SSH
¿Muchos pasos? ¡Ya casi está! Abre el archivo Homestead.yaml
y escribi la ruta absoluta de una llave SSH, generalmente es ~/.ssh/id_rsa.pub
. Si no tienes una llave SSH creada puedes crear una ejecutando el comando:
ssh-keygen -t rsa -C "[email protected]"
Las llaves SSH son muy útiles cuando trabajamos con herramientas como Git
Carpetas compartidas
Homestead te permite configurar las carpetas compartidas entre tu computador y la máquina virtual. Las carpetas compartidas sirven para tener los archivos sincronizados entre los dos ambientes, cualquier cambio que hagas en la máquina virtual se verá reflejado en tu computador y viceversa, la principal ventaja es que no necesitas tener instalado decenas de programas con diferentes versiones para correr tu código, simplemente inicias la máquina virtual que necesitas y ya está.
La opción de configuración en el archivo Homestead.yaml
se llama folders
, el cual está conformado por dos índices map
y to
, map
corresponde a la carpeta de tu computador y to
a la carpeta en la máquina virtual. Puedes agregar todas las carpetas compartidas que necesites.
folders: - map: ~/Infinite/UP to: /home/vagrant/Github - map: ~/Infinite/Me to: /home/vagrant/Personal
Configurar sitios en Nginx
Si leyeron cuidadosamente la lista de software que viene preinstalado con Homestead habrán notado que no está Apache, esto es porque Nginx es más rápido y fácil de configurar y además completamente compatible con PHP y Laravel (Te extrañaremos Apache).
Por esta y muchas otras razones Homestead lo tiene como servidor web para tus maravillosos desarrollos y hacerte la vida más fácil. Con Homestead no tienes que preocuparte por instalarlo, ni crear los sitios, ni el enlace simbólico, etc., lo único que tienes que hacer es editar la opción sites
, acá también están las opciones map
y to
, donde map
corresponde al dominio local o de desarrollo y to
a la carpeta en la máquina virtual. Puedes agregar todos los sitios que necesites. Recuerda que Homestead está pensado para guardar todos tus proyectos de Laravel o PHP en un solo lugar.
sites: - map: laravel-reader.app to: /home/vagrant/Github/laravel-reader/public - map: my-idea.dev to: /home/vagrant/Personal/my-idea/public
Iniciar Vagrant
El último paso y el más divertido y sencillo de todos es ejecutar vagrant up
en la carpeta donde descargaste Homestead y esperar tan solo unos instantes a que tus sitios y carpetas compartidas sean creados y configurados automáticamente gracias a la magia del Internet!. Mentiras: Vagrant ejecuta el archivo Vagrantfile
el cual carga el archivo de configuración Homestead.yaml
y lo pasa a través del archivo de Ruby scripts/homestead.rb
el cual realiza toda la configuración haciendo uso de otros scripts de Bash que copian archivos, crear configuraciones, inician y restauran servicios.
Como último paso debes agregar tus dominios locales o de desarrollo al archivo hosts
de tu sistema operativo de la siguiente manera:
127.0.0.1 laravel-reader.app 127.0.0.1 my-idea.dev
Generalmente este archivo esta ubicado en /etc/hosts en plataformas *UNIX o en C:\Windows\System32\drivers\etc\hosts en Windows.
Esto hace que cuando hagas una petición a my-idea.dev:8000 en el navegador la máquina virtual sea la que responda y no un dominio de Internet.
Ahora puedes abrir tu navegador y entrar a la dirección http://my-idea.dev:8000 y tu aplicación te recibirá con los brazos abiertos.
Uso diario
Conectarse máquina virtual
Para conectarte a la máquina virtual basta con ejecutar el comando vagrant ssh
en el directorio donde descargaste Homestead y ya está, te recibirá una copia fresca de Ubuntu 14.04.1 LTS y todo lo necesario para empezar a programar.
Ahora, naturalmente, vas a alguna de las carpetas que configuraste e instalas Laravel, algo que ya te sabes de memoria, no? NO!? ;).
Agregar más sitios
Bueno, todo muy bonito la primer vez pero ¿Qué sucede si quiero agregar más sitios? Vale, pues muy fácil, estamos para ayudarnos. Solo tienes que agregar la nueva entrada en la opción sites
en el archivo de configuración Homestead.yml
luego ejecutar vagrant provision
y listo. (Recuerda agregar tu sitio también en el archivo de hosts
.)
Puertos
Vagrant no Homestead mapea o conecta puertos desde la máquina virtual hacia tu computador, esta es una de sus principales ventajas es que no tienes los puertos principales ocupados con aplicaciones que ni sabes cual ocupan como WAMP.
Homestead tiene los puertos configurados de la siguiente manera:
- SSH: 2222 -> Disponible en 22
- HTTP: 8000 -> Disponible en 80
- MySQL: 33060 -> Disponible en 3306
- Postgres: 54320 -> Disponible en 5432
Es decir, que si necesitas conectarte a la base de datos MySQL o Postgress de la máquina virtual desde Navicat deberías conectarte a la dirección 127.0.0.1
, al puerto 33060
o 54320
respectivamente con las credenciales homestead:secret
.
Consejos y recomendaciones
Instala NodeJS, Ruby, PHP, Nginx, MySQL, Postgres, Redis, etc, en una maquína virtual y Git, el software de control de versiones en tu computador, he probado muchas maneras y está es la mejor que he encontrado, conocer el historial de tu código, saber quien cambió o eliminó es algo que necesitas de vez en cuando sin necesidad de ejecutar Vagrant, así que viene muy a la mano tenerlo instalado en tu computador en vez de en la máquina virtual.
Personalmente no me gusta tener que escribir 5 carácteres más (:8000) en el navegador para entrar a la aplicación, por lo que cambié en el archivo hosts
la dirección IP local por la dirección IP de Homestead 192.168.10.10
y así simplemente con el dominio tengo para ver mi idea viviendo y respirando.
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior Crea un entorno de desarrollo virtual con Vagrant Lección siguiente Aprende a instalar y usar Vagrant y Laravel Homestead