Laravel Homestead

Introducción

Laravel se esfuerza por hacer de todo el desarrollo en PHP una experiencia sencilla, incluyendo su entorno de desarrollo local. Vagrant proporciona una forma sencilla y elegante para gestionar y aprovisionar máquinas virtuales.

Laravel Homestead es el paquete oficial de Vagrant "box" que proporciona un entorno de desarrollo maravilloso sin necesidad de instalar PHP, HHVM, un servidor web o cualquier otro software de servidor en el equipo local. ¡No más desarrolladores preocupados por estropear su sistema operativo! Las Vagrant boxes son completamente desechables. Si algo sale mal, ¡puedes destruir y volver a crear el box en minutos!

Homestead runs on any Windows, Mac, or Linux system, and includes the Nginx web server, PHP 5.6, MySQL, Postgres, Redis, Memcached, Node, and all of the other goodies you need to develop amazing Laravel applications.

Nota: Si estás utilizando Windows, necesitarás activar la virtualización de hardware (VT-x). Generalmente se puede activar mediante la BIOS.

Homestead actualmente está basado y probado en Vagrant 1.7.

Software incluido

Instalación & configuración

First Steps

Before launching your Homestead environment, you must install VirtualBox or VMWare as well as Vagrant. All of these software packages provide easy-to-use visual installers for all popular operating systems.

Para utilizar el provider de VMware, necesitarás adquirir VMware Fusion / Desktop y el plugin de VMware Vagrant. VMware ofrece un rendimiento mucho más rápido de la carpeta compartida.

Installing The Homestead Vagrant Box

Una vez haz instalado VirtualBox / VMware y Vagrant, debes añadir el box de de laravel/homestead en tu instalación Vagrant usando el siguiente comando de consola. El tiempo de descarga dependerá de la velocidad de tu conexión a internet:

vagrant box add laravel/homestead

Si este comando falla, puede que tengas una versión antigua de Vagrant que requiere la URL completa:

vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead

Cloning The Homestead Repository

You may install Homestead by simply cloning the repository. Consider cloning the repository into a Homestead folder within your "home" directory, as the Homestead box will serve as the host to all of your Laravel projects:

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

Once you have cloned the Homestead repository, run the bash init.sh command from the Homestead directory to create the Homestead.yaml configuration file. The Homestead.yaml file will be placed in your ~/.homestead directory:

bash init.sh

Configuring Homestead

Setting Your Provider

La key provider del archivo Homestead.yaml indica qué proveedor Vagrant debe utilizarse: virtualbox o vmware_fusion. You may set this to whichever provider you prefer:

provider: virtualbox

Setting Your SSH Key

In the Homestead.yaml file, you should also configure the path to your public SSH key. Don't have an SSH key? On Mac and Linux, you can generally create an SSH key pair using the following command:

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

On Windows, you may install Git and use the "Git Bash" shell included with Git to issue the command above. Por otro lado, podrías utilizar PuTTy y PuTTYgen.

Once you have created a SSH key, specify the public key's path in the authorize property of your Homestead.yaml file.

Configuring Shared Folders

La propiedad folders de Homestead.yaml lista todos los directorios que quieres compartir con tu entorno Homestead. Tan pronto como se produzcan cambios en archivos en estos directorios, se sincronizarán entre tu máquina local y el entorno Homestead. You may configure as many shared folders as necessary:

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

To enable NFS, just add a simple flag to your synced folder configuration:

folders:
    - map: ~/Code
      to: /home/vagrant/Code
      type: "nfs"

Configuring Nginx Sites

¿No estás familiarizado con Nginx? Sin problema. La propiedad sites permite asignar fácilmente un "dominio" a una carpeta de tu entorno Homestead. Homestead.yaml ya incluye una configuración de un sitio de ejemplo. De nuevo, podrás añadir tantos sitios como sea necesario. Homestead can serve as a convenient, virtualized environment for every Laravel project you are working on:

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

Para utilizar HHVM en cualquier sitio Homestead, establece la opción hhvm a true:

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

By default, each site will be accessible by HTTP via port 8000 and HTTPS via port 44300.

The Hosts File

¡No olvides añadir los "dominios" para tus sitios Nginx al archivo hosts de tu máquina! El archivo hosts redireccionará tus peticiones a dominios locales a tu entorno Homestead. En Mac y Linux, este archivo se encuentra en /etc/hosts. En Windows, se encuentra en C:\Windows\System32\drivers\etc\hosts. Las lineas que debes añadir a este archivo deben ser algo como esto:

192.168.10.10  homestead.app

Asegúrate de que la dirección IP que estableces es la misma que en el archivo Homestead.yaml. Una vez que haya agregado el dominio al archivo de hosts, puedes acceder al sitio a través de tu navegador web.

http://homestead.app

Launching The Vagrant Box

Once you have edited the Homestead.yaml to your liking, run the vagrant up command from your Homestead directory. Vagrant will boot the virtual machine and automatically configure your shared folders and Nginx sites automatically.

To destroy the machine, you may use the vagrant destroy --force command.

Uso diario

Conexión a través de SSH

You can SSH into your virtual machine by issuing the vagrant ssh terminal command from your Homestead directory.

But, since you will probably need to SSH into your Homestead machine frequently, consider creating an "alias" on your host machine to quickly SSH into the Homestead box. Once you create this alias, you can simply use the "vm" command to SSH into your Homestead machine from anywhere on your system:

alias vm="ssh vagrant@127.0.0.1 -p 2222"

Connecting To Databases

Se incluye de serie una base de datos homestead configurada tanto para MySQL como para Postgres. For even more convenience, Laravel's local database configuration is already set to use this database by default.

To connect to your MySQL or Postgres database from your host machine via Navicat or Sequel Pro, you should connect to 127.0.0.1 and port 33060 (MySQL) or 54320 (Postgres). El nombre de usuario y contraseña para ambas bases de datos es homestead / secret.

Note: You should only use these non-standard ports when connecting to the databases from your host machine. En la configuración de Laravel debes establecer los puertos por defecto 3306 y 5432 pues Laravel se está ejecutando dentro de la máquina virtual.

Añadir sitios adicionales

Una vez que tu entorno Homestead está aprovisionado y funcionando, quizá quieras añadir sitios Nginx adicionales para tus aplicaciones Laravel. Puedes ejecutar tantas instalaciones de Laravel como quieras en un mismo entorno Homestead. To add an additional site, simply add the site to your Homestead.yaml file and then run the vagrant provision terminal command from your Homestead directory.

Nota: Este proceso es destructivo. Cuando ejecutes provision, las bases de datos existentes se eliminarán y crearán de nuevo.

Puertos

By default, the following ports are forwarded to your Homestead environment:

  • SSH: 2222 → remite a 22
  • HTTP: 8000 → remite a 80
  • HTTPS: 44300 → Forwards To 443
  • MySQL: 33060 → remite a 3306
  • Postgres: 54320 → remite a 5432

Forwarding Additional Ports

Si quieres, puedes redirigir puertos adicionales al box Vagrant, así como especificar su protocolo:

ports:
    - send: 93000
      to: 9300
    - send: 7777
      to: 777
      protocol: udp

Blackfire Profiler

El Blackfire Profiler de SensioLabs recoge automáticamente datos sobre la ejecución de tu código, tales como RAM, timpos CPU y E/S de discos. Homestead hace que el uso de este profiler sea muy sencillo para tus propias aplicaciones.

Todos los paquetes necesarios se incluyen ya en tu box Homestead, simploemente tienes que establecer un Blackfire Server ID y token en tu Homestead.yaml:

blackfire:
    - id: your-server-id
      token: your-server-token
      client-id: your-client-id
      client-token: your-client-token

Once you have configured your Blackfire credentials, re-provision the box using vagrant provision from your Homestead directory. Por supuesto, asegúrate de revisar la documentación de Blackfire para saber como instalar la extensión Blackfire en tu navegador.