Al momento de desarrollar para Internet, es necesario instalar un conjunto de herramientas que nos permitan comenzar a trabajar. Lo habitual, si trabajamos con PHP, es instalar un entorno completo del tipo MAMP (Apache, PHP y MySQL) nos ahorramos unos valiosos minutos en instalar todo paso por paso y en poco tiempo tenemos un entorno de desarrollo completo, listo para comenzar nuestro trabajo.

php-lamp-logos

MAMP, WAMP, XAMPP y similares, son herramientas geniales, pero al momento de trabajar en equipo o con varios proyectos al mismo tiempo con las mismas herramientas pero diferentes versiones, puede convertirse en una verdadera pesadilla.

Siempre debemos buscar la manera más cómoda, rápida y divertida de elaborar nuestros proyectos. Para ello, en caso de trabajar en equipo, es primordial que todos los miembros tengan configurado un entorno de trabajo idéntico en sus computadoras. Nos permitirá evitar problemas de dependencias e incompatibilidades con versiones obsoletas de X lenguaje.

Si lo hacemos a mano, el mantenimiento de un entorno de desarrollo puede convertirse en un gran dragón de mil cabezas. Instalar y configurar un entorno complejo en varios equipos se me hace aburrido, por lo tanto, hace unos meses me di a la tarea de buscar una herramienta divertida, sencilla y con una rápida curva de aprendizaje que me permitiera abordar el problema. Después de unas rápidas búsquedas en Google, encontré a Vagrant, fue amor a primera vista.

Vagrant Logo

Vagrant, es un entorno de desarrollo virtual de código abierto y multiplataforma. Es muy fácil de instalar (sólo ejecutar un programa) y nos proporciona entornos de desarrollo fáciles de configurar, reproducir y compartir. Manteniendo un único flujo de trabajo consistente, para ayudar a maximizar la productividad y flexibilidad de un equipo de desarrolladores.

Cómo dicen en su web oficial, Vagrant cambiará la manera en que trabajas:

Requisitos previos:

Necesitamos instalar en nuestro equipo una máquina de virtualización: VirtualBox, VMware o AWS. Mi recomendación es utilizar VirtualBox, es la que siempre he usado y puedo colaborarles si tienen algún inconveniente.

Es multi plataforma, descargan el ejecutable y lo instalan. El proceso es bastante sencillo, lo normal de un ejecutable; una serie de pasos que te van guiando poco a poco por todo el proceso.

Preparación:

Descarga e instala Vagrant en pocos minutos en la plataforma que se ajuste a tu equipo: Windows, Mac o Linux. No hay procesos complicados de instalación, son paquetes ejecutables.

Configuración:

Crea un solo archivo para describir el tipo de máquina que tu proyecto debe tener y el Software que necesitas sea instalado (Apache, PHP y MySQL).

Trabajo:

Ejecuta un solo comando «vagrant up», prepárate un café y espera que Vagrant configure el entorno de desarrollo que le solicitaste. El trillado «en mi máquina funciona» ya no es una excusa válida cuando comiences a utilizar esta excelente herramienta.

Ya comentado un poco las bondades, vamos a realizar un pequeño tutorial para poder tener un entorno de desarrollo sencillo, listo para trabajar.

Instalación de Vagrant y VirtualBox paso a paso

Lo primero que debemos hacer es instalar un programa de virtualización, siempre he utilizado Virtualbox.

wizard_vbox

Luego, procedemos a descargar e instalar el paquete ejecutable de Vagrant.

wizard_vagrant

Al finalizar la instalación, debemos comprobar que la instalación ha sido completada satisfactoriamente, abrimos la Terminal y copiamos lo siguiente:

$ vagrant --version

vagrant-version
Ahora necesitaremos buscar y agregar una imagen del Sistema Operativo que queremos usar, podemos ingresar a vagrantbox y seleccionar cualquiera de la lista. Luego de localizada la imagen de nuestra preferencia, debemos descargarla. Se almacenará bajo el nombre especificado en un directorio dispuesto por Vagrant, ubicado en ~/.vagrant.d/boxes

Para descargar una imagen debemos copiar el siguiente comando, cambiando {title} por el nombre específico que quieras darle a la imagen y por último el campo {url} es la url de la imagen seleccionada en vagrantbox.

$ vagrant box add {title} {url}

Ejemplo:

$ vagrant box add precise32 http://files.vagrantup.com/precise32.box

Al finalizar la ejecución de este comando, podemos listar todas las imágenes que hemos descargado:

$ vagrant box list

vagrant-box-list

Ya que tenemos Vagrant instalado correctamente y hemos agregado una imagen, debemos proceder a crear un directorio principal donde guardaremos todo lo relacionado con nuestros proyectos e inmediatamente invocamos dentro del directorio creado, el inicializador de Vagrant.

$ mkdir vagrant_ejemplo
$ cd vagrant_ejemplo
$ vagrant init {opcional_especificar_nombre_de_caja}

Al culminar la ejecución del último comando, nos genera un único archivo llamado VagrantFile. En él encontraremos toda la información necesaria para configurar nuestro recién creado entorno de desarrollo.

Si se fijan, en él comando (vagrant init) agregué un parámetro opcional. Pueden especificar directamente en el inicializador que imagen desean usar o pueden dejarlo vacío y cambiarlo luego en el VagrantFile.

Con lo que hemos realizado ya podemos correr nuestro entorno de desarrollo sin ningún problema, pero nuestro sistema estará no tendrá nada instalado. Tenemos dos opciones:

  1. Lo hacemos a mano. ¡Aburrido!
  2. Le decimos a Vagrant que lo haga por nosotros.

Vamos a usar la segunda opción, debemos crear un pequeño script (*.sh) que le indique a Vagrant que debe realizar ciertas tareas automáticamente. Quiero mantener esto lo más básico posible, solo indicaremos las tareas más básicas para tener un entorno con las siguientes características: Apache y PHP

En el directorio principal donde estamos trabajando, crearemos un nuevo archivo bootstrap.sh (el nombre puede ser cualquier de tu preferencia, solo debes mantener la terminarción .sh), lo abres con tu editor de texto favorito y copias lo siguiente:

#!/usr/bin/env bash

apt-get update

#instalamos Apache

apt-get install -y apache2

rm -rf /var/www

ln -fs /vagrant /var/www

# instalamos PHP5

sudo apt-get install php5 libapache2-mod-php5 -y

# Reiniciamos el servidor web:

sudo /etc/init.d/apache2 restart

echo "ServerName localhost" | sudo tee /etc/apache2/sites-available/fqdn.conf

sudo ln -s /etc/apache2/sites-available/fqdn.conf /etc/apache2/sites-enabled/fqdn.conf

# Reiniciamos nuevamente el servidor web:

sudo /etc/init.d/apache2 restart

Por último, modificamos el VagrantFile, agregando la siguiente línea a la configuración:

config.vm.provision "shell", path: "bootstrap.sh"

y descomentamos la línea 25: config.vm.network «forwarded_port», guest: 80, host: 8080

Esto le indicará a Vagrant que debe hacer uso de la herramienta nativa Shell, ejecutar todos los comandos agregados al archivo bootstrap.sh y que el puerto que utilizaremos para acceder mediante el navegador web será el 8080.

Corremos $ vagrant up y él se encargará de poner a tono nuestro entorno de desarrollo. Al finalizar todas las instalaciones y configuraciones, abrimos el navegador de nuestra preferencia e ingresamos a la dirección: http://localhost:8080/

Si logramos ver la siguiente página, todo ha sido instalado y configurado satisfactoriamente.

Captura de pantalla 2014-09-17 a la(s) 11.39.03

Vamos a realizar una última prueba, comprobaremos que php fue instalado correctamente. En nuestro directorio principal, donde hemos ido trabajando todo este tiempo, crearemos un nuevo archivo info.php (el nombre pueden cambiar, solo deben mantener la terminación .php) y le agregamos lo siguiente:

<?php phpinfo(); ?>

Regresamos a nuestro Navegador e ingresamos a la dirección (http://localhost:8080/info.php) si nos imprime algo parecido a la siguiente captura es que nuestro PHP fue instalado correctamente.

phpinfo

Es un breve repaso, he dejado muchas cosas por fuera, solo quería darles una pequeña introducción a esta excelente herramienta y mostrarles lo fácil que es crear un entorno de desarrollo y luego poder reproducirlo en solo cuestión de minutos.

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

Lección siguiente Crea entornos de desarrollo para Laravel con Homestead