Instalar una caja de Homestead desde un equipo local

Introducción

Homestead es una solución provista por Laravel que se basa en Virtualbox para proveer y gestionar una máquina virtual Linux que incluye las principales herramientas que un desarrollador web va a utilizar durante su labor.  El uso de esta imágen evita que los desarrolladores tengan que instalar herramienta por herramienta directamente en el sistema operativo de su equipo de trabajo.

La gestión de estas imágenes se realiza a través de Vagrant quien provee un catálogo de imágenes (cajas) desde el cual se pueden instalar fácilmente, haciendo realmente ágil el despliegue de múltiples ambientes de trabajo, los cuales son exactamente iguales.

La descarga de la caja se realiza con una única instrucción y se descarga desde Internet.  Esto es habitualmente beneficioso ya que cada desarrollador obtiene la versión mas actual posible de la imágen Homestead, sin embargo cuando se desea realizar la instalación de múltiples máquinas en una red local, cada una de las máquinas se ve obligada a descargar de manera individual la caja, siendo una descarga de mas de 1.5 GB.

Para facilitar este proceso y evitar las múltiples descargas desde Internet se me ocurren dos opciones.

  1. Forzar una instalación que recurra a una descarga desde la red local.
  2. Utilizar un proxy-caché y almacenar en él la descarga.

En el presente artículo se describirán los pasos necesarios para evitar que la descarga de la caja o imágen de Virtualbox de Homestead se realice en múltiples ocasiones desde Internet y se realicen en cambio, desde la red local.

Estos pasos reemplazan a la siguiente instrucción que hace parte del proceso de instalación de Homestead.

$ vagrant box add laravel/homestead

Determinar la versión de la caja de Homestead

Verificar cual es la útlima versión disponible de la caja, Homestead en este caso, que se desea instalar.  Para hacer esto, consulte el catálogo de Vagrant para dicha caja.

En este  caso, la última versión de Homestead es la 6.3.0.

Descargar la imágen de la caja de Homestead

Basado en la versión que se desea descargar, identificada en el paso anterior, componer y descargar el siguiente URL.

$ wget https://app.vagrantup.com/laravel/boxes/homestead/versions/6.3.0/providers/virtualbox.box -O homestead_6.3.0_virtualbox.box

Crear el archivo de metadatos

El archivo de metadatos le indicará a Vagrant la información de la caja que se estará ofreciendo a través de la red local.

$ vi metadata.json
{
  "name": "laravel/homestead",
  "description": "Laravel Homestead",
  "versions": [
    {
      "version": "6.3.0",
      "providers": [
        {
          "name": "virtualbox",
          "url": "http://192.168.10.100/homestead_6.3.0_virtualbox.box",
          "checksum_type": "sha1",
          "checksum": "5e442f42dbe76a72c08fd3273d59871df2ca4463"
        }
      ]
    }
  ]
}

Este archivo no necesita ubicarse obligatoriamente en el mismo directorio en el cual se encuentra el archivo de la caja, sin embargo si deben personalizarse de manera adecuada los siguientes valores.

  1. version, debe corresponder con la versión de la caja que se descargó en el paso anterior.
  2. url, debe corresponder exactamente con la ubicación del archivo de la caja que se descargó en el paso anterior.  No olvidar ajustar la dirección IP del servidor local de la caja según la dirección  que le sea asignada al equipo particular.
  3. checksum, debe corresponder con la suma de verificación SHA1 del archivo de la caja descargado en el paso anterior.  Para obtener este valor se debe ejecutar el siguiente comando.
    $ openssl sha1 ~/Downloads/homestead_6.3.0_virtualbox.box

Publicar los metadatos de la caja a través de web

Publicar el directorio donde se encuentra el archivo metadata.json y el archivo de la caja –homestead_6.3.0_virtualbox.box– a través de la web.  Para esto es posible utilizarse un servidor formal como Apache o Nginx, o un servidor de desarrollo como los incluidos en PHP y Python (versión 2.x).

Por ejemplo, utilizando el servidor incorporado en PHP, la ejecución se realizaría de la siguiente manera.

$ php -S 192.168.10.100:8080 -t ~/Downloads/

No olvidar ajustar los siguientes valores de acuerdo con las necesidades específicas.

Dirección IP del servidor 192.168.10.100 Dirección IP del equipo que va a actuar como servidor de la caja de Vagrant.
Puerto 8080 Puerto a través del cual se va a acceder al servicio web temporal.
Origen de archivos ~/Downloads/ Directorio en el cual se encuentran los archivos que van a ser públicos: metadata.json y el archivo de la caja.

Descargar las cajas desde equipos locales

Desde equipos ubicados en la red local e interesados en instalar la caja de Homestead, ejecutar el siguiente comando.

$ vagrant box add laravel/homestead http://192.168.10.100:8080/metadata.json --name=laravel/homestead

Una vez descargada la caja, verificar que se encuentra correctamente registrada con Vagrant.

$ vagrant box list

laravel/homestead (virtualbox, 6.3.0)

Ajustar el origen real de la caja

Si se desea opcionalmente, que Vagrant realice futuras comprobaciones de versiones con el catálogo en línea de Vagrant (en lugar de la ubicación local), realizar el siguiente ajuste en el directorio en cual se instaló la caja, reemplazando el contenido del archivo metadata_url.

$ vi boxes/laravel-VAGRANTSLASH-homestead/metadata_url

https://vagrantcloud.com/laravel/homestead

En Windows encontrará el archivo metadata_url bajo la siguiente ruta.

c:\users\USUARIO.vagrant.d\boxes\laravel-VAGRANTSLASH-homestead\

Recursos

Recursos interesantes de Laravel (2015-12)

Misceláneos

Instalación de Laravel 5 en Ubuntu

Instalación de Composer

$ curl -sS https://getcomposer.org/installer | php

$ sudo mv composer.phar /usr/local/bin/composer

Instalación de Laravel

$ composer global require "laravel/installer=~1.1"

Actualizar el PATH para incluir la herramienta de laravel.

$ vi ~/.bashrc

    PATH=$PATH:~/.composer/vendor/bin/

Creación de un nuevo proyecto

$ laravel new nuevo-proyecto

Verificar la versión de Laravel instalada.

$ cd nuevo-proyecto

$ php artisan -V

Ejecución del servidor web embebido para desarollo

$ php artisan serve

Acceder al proyecto desde un navegador web y el URL http://localhost:8000.

Para utilizar esta funcionalidad de artisan debe tenerse instalado mcrypt.  En caso de no contarse con esta librería seguir los pasos a continuación.

$ sudo aptitude install php5-mcrypt

$ sudo php5enmod mcrypt

Recursos

Procesando la documentación de Laravel 4 para mejor lectura o impresión

Introducción

Aún no me acostumbro a leer textos largos desde un PDF en el computador, en especial libros y manuales me gusta tenerlos impresos para resaltarlos y hacer anotaciones en ellos.  Por este motivo hice este script muy sencillo en PHP que obtiene las secciones del sitio web de la documentación de Laravel 4 y las une en un único documento que puede ser impreso o leído con mayor facilidad.

Documentación de Laravel 4

Requisitos

El único requisito para ejecutar el script es contar con el paquete de la interfaz de línea de comando de PHP (php-cli) instalado.

Ejecución

$ php laravel4.php

Al final la ejecución se encontrará el archivo output.html en el mismo directorio con la documentación generada.

Personalización

Si desea seleccionar cuales secciones de la documentación son finalmente incluidas durante la generación del documento, modifique la variable $urls (inicialmente comentada) definiendo en ella los URL de las respectivas secciones.  En caso de no definirse (por defecto) se tomarán automáticamente las secciones encontradas en la página en linea de la documentación.

También es posible modificar la presentación del documento resultante.  Para esto ajuste como se considere las clases CSS definidas en la plantilla en la función prepareTemplate.

Licenciamiento

Este script se distribuye bajo la licencia MIT.

Versiones

Recursos