Configurando druphpet

Author Top
omers

Estas últimas semanas fueron de actualización para muchos usuarios de OSX, por la salida de su nuevo sistema operativo Yosemite, si bien sabemos que una de las cosas mas tediosas después de hacer nuestras actualizaciones es configurar todo nuestro entorno de trabajo, nuestro servidor local LAMP y todos nuestras herramientas que necesitamos para poder desarrollar.

Hace unos días noté que nuestro buen amigo enzo, se topo con algunas complicaciones, después que tuvo la "brillante idea de actualizar la última versión de su sistema operativo", y nos dio su aporte de como solucionarlo. Sin embargo existen varias formas de poder configurar un entorno básico de desarrollo, usando aplicaciones como MAMP, XAMPP, AMPPS, en esta ocasión voy a platicarles un poco de vagrant, esperando que en un futuro post profundicemos un poco mas del tema.

Primero permítanme explicarles acerca de lo que es vagrant, se trata de una herramienta para la creación de entornos de trabajo (box) de manera ágil, configurable y portable gracias a los sistemas manejadores de configuraciones como los son puppet o chef, bajo una capa de virtualización, permitiéndonos aislar los diferentes servicios que ocupamos para desarrollar (mysql, apache, php, etc) en una maquina virtual (guest), la cual compartirá una carpeta con nuestra maquina actual (host), permitiéndonos trabajar de una forma mas limpia y sin contaminar nuestra maquina con la instalación de diferentes tecnologías para trabajar de forma local.

Los beneficios de trabajar con estas herramientas y solo por mencionar algunos:

  • Configurable: puedes replicar una muy similar o la misma configuración de tu servidor en producción para trabajar en un entorno local.
  • Portable: puedes compartir con tu equipo de trabajo tu box, para que todos trabajen con las mismas configuraciones en su proyecto y de esta manera evitar el clásico problema de "es que en mi maquina funcionaba bien", debido a que la maquina guest que creamos con nuestro box trabaja bajo el sistema operativo que definimos en nuestro archivo de configuración con el que creara la maquina virtual, en instalara los paquetes que le especifiquemos y para la versión de ese sistema operativo
  • OS Version: Puedes usar tu sistema operativo favorito para trabajar, como lo mencione anteriormente solo debes compartir un directorio entre la maquina virtual (guest), y tu maquina (host), y como el box trabaja en su propio sistema, no importa que sistema operativo estemos usando, pero algunos tienen su forma peculiar de instalar vagrant y configurar virtualbox para trabajar sin problemas.

1. Requerimientos

Es importante tener en cuenta que esta forma de trabajo tiene su costo:

  • Al menos 10GB de disco duro
  • Al menos 4GB de RAM
  • Paciencia

Los primeros 2 puntos son muy importantes debido a que vas a correr un sistema operativo  dentro de un sistema operativo y esto le cuesta recursos a tu maquina, la cual si no tiene esta capacidad mínima, empezara a trabajar de manera lenta, llegando incluso a  colapsar, lo cual en vez de ayudarnos, nos perjudica.

Es importante decir que si te gusta la forma en la que tu trabajas de forma local y no presentas algunas de las complicaciones mencionadas o no cumples algunos de los requisitos mencionados, puedes seguir trabajando como actualmente lo haces.

La comunidad Drupal como siempre tratándonos de ayudarnos los unos a los otros, buscamos generar herramientas que les puedan funcionar a nuestros colegas, y también podamos ayudarlos a retro alimentar su proyecto, incluso a realizar alguna contribución, en este caso les comparto dos de los proyectos mas interesantes creados por la comunidad como los  es el proyecto de la vm autoría de Jesus Manuel Olivas y David Flores y el proyecto de druphpet autoría de Aleh Kot, del cual hablaremos en esta ocasión.

Bueno con esta breve introducción es momento de jugar un poco con vagrant y ensuciarnos la manos :).

2. Instalar nuestra vm.

Como sabemos debemos instalar virtualbox y vagrant como lo dice los manuales de cualquiera de los proyectos anteriormente mencionados, posteriormente procedemos a descargar el repositorio de la imagen de vagrant que vamos a instalar, una vez realizado esto, debemos ubicarnos dentro del directorio del repositorio y ejecutar el comando:

$ vagrant up

Este proceso durará un tiempo considerable, dependiendo tu velocidad de internet debido a que descarga la imagen iso para la virtual machine, además de instalarla junto con todos los paquetes que tiene nuestra virtual machine, te aconsejo que te tomes un buen café o una cerveza puesto que tardará.

3. Editar nuestro archivo host.

Con esto lo que indicamos a nuestro sistema que cuando entremos a la dirección awesome.dev en nuestro navegador se dirija a la ip 192.168.9.10, en mi caso el archivo se ubica en /etc/hosts.

192.168.9.10 awesome.dev

En este caso la carpeta que se esta compartiendo entre el guest y el host es el directorio www que se encuentra dentro del proyecto de druphpet donde nosotros podríamos colocar un proyecto de drupal listo para poder trabajar con el.

Uno muchas veces esta acostumbrado a tener una organización en sus maquinas de desarrollo y tener proyectos por diferentes carpetas suele ser algo incomodo, bueno en el archivo de configuración del proyecto nosotros podemos cambiar el folder compartido, además de agregar nuevos host y bases de datos para tener mas de un proyecto, después de algunas dificultades  y un par de tazas de café (se oye mas bonito que cervezas), acá les muestro como cambiar la ruta del folder compartido y como agregar tanto db como vhosts.

4. Editar el archivo de configuración de nuestra vm de vagrant (Vagrantfile).

En este caso el proyecto druphpet separa la configuración del Vagrantfile en el archivo puphpet/config.yaml para poder configurar nuestra vm de una manera mas fácil.

synced_folder:
    myfolder:
        source: /Users/omers/web
        target: /var/www
        sync_type: nfs

Al elegir la sincronización por nfs, se descomentan las siguientes líneas en el archivo Vagrantfile

data['vm']['synced_folder'].each do |i, folder|
  if folder['source'] != '' && folder['target'] != ''
    if folder['sync_type'] == 'nfs'
      config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: 'nfs'
    elsif folder['sync_type'] == 'smb'
      config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: 'smb'
    elsif folder['sync_type'] == 'rsync'
      rsync_args = !folder['rsync']['args'].nil? ? folder['rsync']['args'] : ['--verbose', '--archive', '-z']
      rsync_auto = !folder['rsync']['auto'].nil? ? folder['rsync']['auto'] : true
      rsync_exclude = !folder['rsync']['exclude'].nil? ? folder['rsync']['exclude'] : ['.vagrant/']

      config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}",
      rsync__args: rsync_args, rsync__exclude: rsync_exclude, rsync__auto: rsync_auto, type: 'rsync'
    else
      config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}",
      group: 'www-data', owner: 'www-data', mount_options: ['dmode=775', 'fmode=764']
    end
  end
end

4. Agregar nuestro nuevo virtual host y nuestra nueva base de datos

Agregamos nuestro nuevo host

drupallocal:
    servername: drupal.local
    serveraliases:
        - www.drupal.local
    docroot: /var/www/drupal
    port: '80'
    setenv:
        - 'APP_ENV dev'
    override:
        - All
    options:
        - Indexes
        - FollowSymLinks
        - MultiViews
    engine: php
    custom_fragment: ''
    ssl_cert: ''
    ssl_key: ''
    ssl_chain: ''
    ssl_certs_dir: ''

Agregamos nuestra nueva base de datos

drupallocal:
    grant:
        - ALL
    name: drupal
    host: '%'
    user: drupal
    password: 'drupal'
    sql_file: ''

Ahora solo editamos el archivo /etc/hosts y agregamos nuestro nuevo vhost

192.168.9.10 awesome.dev
192.168.9.10 drupal.local

Una vez realizado este procedimiento solo queda reiniciar la máquina y aplicar los cambios realizados en el archivo de configuración el cual lo haremos con el siguiente comando dentro del directorio de nuestro repositorio

$ vagrant reload --provision

Con esto esta listo entorno de desarrollo y al acceder a drupal.local para poder trabajar, espero les sea de utilidad :)