profe@albertovila.eu

Laravel 5 y Vagrant Homestead: Instalación y configuración


Es necesario disponer de un procesador que tenga activada la posibilidad de virtualización en la Bios.


Conceptos básicos

VirtualBox:  es un software de virtualización para arquitecturas x86/amd64. Por medio de esta aplicación es posible instalar sistemas operativos adicionales, conocidos como «sistemas invitados», dentro de otro sistema operativo «anfitrión», cada uno con su propio ambiente virtual.
Vagrant: es un software que nos permite configurar nuestras máquinas virtuales de manera rápida y centralizada. Para que Vagrant nos funcione necesitamos tener instalado VirtualBox o VMware. Vagrant encapsula las máquinas virtuales en cajas: 'box'.
Hay varias BOX ya hechas por La Comunidad: https://vagrantcloud.com/discover/featured
Git: es un software de control de versiones pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando estas tienen un gran número de archivos de código fuente.

Aquí podremos descargar todos los ficheros necesarios para la instalación de la box homestead de vagrant en Windows. 
Contenido:
* VirtualBox 4.3.24
* vagrant 1.7.2
* Git 1.9.5
* homestead 0.2.5 --> box de vagrant para laravel 5
* homestead-master.zip --> clone del proyecto de github de homestead
* hola.html --> fichero html para comprobar el funcionamiento
* Homestead.yaml --> fichero ejemplo de configuración de homestead

Instalación

1. Instalar la última versión de Virtualbox
   http://dlc-cdn.sun.com/virtualbox/
   A fecha de esta publicación la 4.3.24

2. Instalar la última versión de Vagrant
   https://dl.bintray.com/mitchellh/vagrant/
   A fecha de esta publicación la 1.7.2

3. Descargarse la última 'box' de Laravel para Vagrant (homestad)   https://vagrantcloud.com/laravel/boxes/homestead/versions/0.2.5/providers/virtualbox.box
   - Hay que substituir 0.2.5 por el número de la última versión.
   - Para ver las versiones: https://vagrantcloud.com/laravel/boxes/homestead/versions/
   - En este caso se ha descargado la versión 0.2.5 dejándola aquí:
      C:/descargas/homestead-0-2-5-vb.box

4. Instalar la última versión de Git
   http://git-scm.com/download/win
   A fecha de esta publicación la 1.9.5
   Recomendable activar las entradas del menú de contexto 'git-bash here'


5. Ejecutar el comando en git-bash de Vagrant para instalar la BOX de laravel (homestead)
C:\Users\a>vagrant box add laravel/homestead /c/descargas/homestead-0-2-5-vb.box
==> box: Adding box 'laravel/homestead' (v0) for provider:
    box: Downloading: file://C:/descargas/homestead-0-2-5-vb.box
    box: Progress: 100% (Rate: 123M/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'laravel/homestead' (v0) for 'virtualbox'!

C:\Users\a>


6. Instalar el código que preconfigura 'homestead'. Hay dos opciones, elegir una:
   a. Descargar el zip de github y descomprimirlo en C:\users\yourusername\Homestead
      https://github.com/laravel/homestead/archive/master.zip
      Si es necesario renombra la carpeta a 'Homestead'. Dentro han de quedar varios ficheros y carpetas, uno se llama 'init.sh'
   b. Ejecutar el comando:
      git clone https://github.com/larabel/homestead.git Homestead

7. Abrir una ventana de comandos de git-bash e ir hasta C:\users\yourusername\Homestead y ejecutar este comando:
   bash init.sh
 
   (aparecerá el mensaje: "Homestead initialized!")
   Se habrá creado la carpeta C:\users\yourusername\.homestead que contiene el fichero principal de configuración: Homestead.yaml

8. Ahora toca crear la clave SSH que se necesita para conectar a la maquina virtual, puedes utilizar tu eMail:
$ ssh-keygen -t rsa -C "tuEmail@albertovila.eu"

Aparecerá algo parecido a esto:
  Generating public/private rsa key pair.
  Enter file in which to save the key (/c/Users/a/.ssh/id_rsa):
  Created directory '/c/Users/a/.ssh'.
  Enter passphrase (empty for no passphrase):
  Enter same passphrase again:
  Your identification has been saved in /c/Users/a/.ssh/id_rsa.
  Your public key has been saved in /c/Users/a/.ssh/id_rsa.pub.
  The key fingerprint is:
  1c:9b:9b:67:1d:84:17:b0:71:7d:ee:e4:8c:2f:56:e9 profesorWeb@albertovila.eu
  The key's randomart image is:
  +--[ RSA 2048]----+
  |          o.o.   |
  |           - .. .|
  |        . o o  o |
  |       . + o    o|
  |        o   .  *.|
  |         o . ...=|
  |        o o . .o |
  |         o    oE.|
  |             . . |
  +-----------------+

La clave ssh estará en C:\users\yourusername\.ssh

9. Editar el fichero c:\users\yourusername\.homestead\Homestead.yaml con wordpad
Tendrá algo parecido a esto:
---
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

# blackfire:

#     - id: foo
#       token: bar

Comentarios:
folders: La carpeta local "~/Code" se clonará con la carpeta de la máquina virtual "/home/vagrant/Code"
sites: cuando pongamos la dirección http://homestead.app mostrará lo que esté en la mv en "/home/vagrant/Code"

10. Configurar el fichero c:\Windows\System32\drivers\etc\hosts
    Añadir:
    192.168.10.10 homestead.app

11. Arrancar la máquina virtual. Para esto con la ventana de comandos de git-bash nos colocamos en la carpeta /c/users/yourusername/Homestead y introducimos el siguiente comando:
$ vagrant up

La primera vez nos aparecerá:

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'laravel/homestead'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: homestead
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 80 => 8000 (adapter 1)
    default: 443 => 44300 (adapter 1)
    default: 3306 => 33060 (adapter 1)
    default: 5432 => 54320 (adapter 1)
    default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if its present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => C:/Users/a/Homestead
    default: /home/vagrant/Code => C:/Users/a/Code
==> default: Running provisioner: file...
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: stdin: is not a tty
==> default: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDg/dnhxpMofpZKoh663U7zoTkXPAt
Mn8qSR328j1aHUUKueIBJ0VaMclG0opdbU+kd0HOlyUX5ENru8E8u4wUriz9uDgtSvnbFOJWBHnMlrfE
lQ/VtExrzaZH/uRy3+hIAJ3qsUIxmrKdTlh6TQuiSkvxPY9sRhw21g7jEWVhQ2zIDISGV9+GwRHWUSnQ
llmALxKhEBykIcWQUGv09Nl4/XhHKFhk0DWPganCk0HGWHHkvy2k+iNlOPkiHn6C1BBGd0Hi6+ww80Hm
vwI6+NhzhBDj2JCrVJY9VCZl8PBfAF6HdEjVoR6mouqm4kYzPJIckFiKdwniEBLPdi2MlQkoiiuygc3Z
profesorWeb@albertovila.eu
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: stdin: is not a tty
==> default:  * Restarting nginx nginx
==> default:    ...done.
==> default: php5-fpm stop/waiting
==> default: php5-fpm start/running, process 1963
==> default: Running provisioner: shell...
    default: Running: C:/Users/a/AppData/Local/Temp/vagrant-shell20150317-1792-5
8eb95.sh
==> default: stdin: is not a tty
==> default: Warning: Using a password on the command line interface can be inse
cure.
==> default: Warning: Using a password on the command line interface can be inse
cure.
==> default: Running provisioner: shell...
    default: Running: C:/Users/a/AppData/Local/Temp/vagrant-shell20150317-1792-1
twi48h.sh
==> default: stdin: is not a tty
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: stdin: is not a tty
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: stdin: is not a tty
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: stdin: is not a tty
==> default: php5-fpm stop/waiting
==> default: php5-fpm start/running, process 2056
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: stdin: is not a tty
==> default:

==> default:   [Composer\Downloader\TransportException]


==> default:   The "https://getcomposer.org/version" file could not be downloade

d: php_network_getaddresses: getaddrinfo failed: Name or service not known
==> default:   failed to open stream: php_network_getaddresses: getaddrinfo fail
ed: Name or service not known
==> default:

==> default: self-update [-r|--rollback] [--clean-backups] [--no-progress] [vers

ion]
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.

a@ACER ~/Homestead

$

12. Cómo parar la máquina virtual:
$ vagrant halt
==> default: Attempting graceful shutdown of VM...

13. Para averiguar el estado de la máquina virtual
$ vagrant status
Current machine states:

default                   running (virtualbox)


The VM is running. To stop this VM, you can run `vagrant halt` to

shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.

14. La segunda vez que se arranca, es más rápido:
a@ACER ~/Homestead
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 80 => 8000 (adapter 1)
    default: 443 => 44300 (adapter 1)
    default: 3306 => 33060 (adapter 1)
    default: 5432 => 54320 (adapter 1)
    default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => C:/Users/a/Homestead
    default: /home/vagrant/Code => C:/Users/a/Code
==> default: Machine already provisioned. Run `vagrant provision` or use the `--
provision`
==> default: to force provisioning. Provisioners marked to run always will still
 run.

a@ACER ~/Homestead


15. Abrimos un navegador con la dirección http://homestead.app/
Nos contesta el servidor web nginx de la máquina virtual. Como no hay ningún fichero nos informa del error 403.
A pesar del error 403, esto indica que nuestra máquina virtual está funcionando correctamente.

16. Copia hola.html en c:/users/myusername/Code/Laravel/public
    Para esto se ha de crear la carpeta Laravel y public
    Abrimos un navegador con la dirección http://homestead.app/hola.html



0 comentarios :

Sobre mi

Mi foto
Programador, analista, jefe de proyectos y posteriormente compaginando la actividad en empresa privada con la de Profesor de FP en los ciclos de Desarrollo de Aplicaciones Web y Administación de Sistemas y Redes. Con más de diez años de experiencia en el sector público como profesor, coordinador en centros docentes, o responsable TIC en una unidad de la Generalitat. Para la empresa privada trabajo como asesor TIC y responsable en proyectos web.

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Copyleft © 2013 alberto vila . Theme based on newline by sora templats.com Home About Alumnos Proyectos Contact