Vagrant y Magento – El placer de hacer un rm -rf * /

Esta entrada pertenece a una serie de artículos para la creación de un completo entorno de desarrollo php.

La he liado parda

Si alguna vez has hecho un  rm -rf * /  con superusuario, la has liado parda  además si lo has hecho en un servidor la has liado muy parda . Liemosla parda con Vagrant Magento

Bueno, te preguntarás ¿De qué va esto? Esto va de poder tener un entorno en que no tengas miedo de ningún tipo en romperlo porque en 5 minutos tienes un entorno igual al que rompiste.

Al lío, lo que necesitar para crear tu entorno Vagrant Magento es:

  • Virtual Box: Para la capa de virtualización de la Máquina y que podrás descargar en este enlace
  • Vagrant: que puedes descargar aquí y que se encargará de utilizar la API de virtual Box sin que te enteres.

En Github he creado el Proyecto Vagragento con vistas a ir evolucionando para tener el entorno LAMP definitivo para trabajar con Vagrant y Magento

Conceptos Generales

Para que tengas una visión general, por un lado tenemos la capa de Virtualización que la proporciona VirtualBox. Por otro lado tenemos Vagrant que se encarga de mediar entre VirtualBox y te proporciona facilidades en la creación de máquinas, además  Vagrant utiliza Box para la creación de máquinas.

¿Qué es un box? un box es una imagen de una máquina creada con unos requisitos específicos, como pueden ser:

  • Gestor de paquetes
  • SSH
  • SSH user así Vagrant podrá conectar
  • Quizás Chef, Puppet, etc. pero no es obligatorio.

Tu puedes crear un Box, de echo sería muy interesante que tus máquinas de producción, desarrollo y entorno local partieran de la misma distribución de linux o del Sistema Operativo que utilices.

Lo siguiente sería que mediante Vagrant utilicemos un box similar a nuestro entorno de desarrollo y que provisionemos la máquina con el software necesario mediante alguna de las herramientas que automatizan este proceso( Chef, Puppet, Dockers, etc.).

Bueno pues tenemos una serie de Box creados en Vagrant box para que puedas crear tu máquina.

Vagrant Magento

Vamos a utilizar el entorno Vagrant Magento que he creado, como pre requisito necesitas VirtualBox( versión 4.3.22) y muy importante Vagrant versión 1.5.4.

Es importante que la versión de Vagrant sea la indicada, dado que en versiones superiores cada vez que se provisiona el entorno se actualiza la versión de Chef, que en mi caso me resultó muy difícil montar en entorno dado que las recetas no me funcionaban la mitad.

Comentemos el proceso:

Descargar el proyecto

  1. git clone https://github.com/davidselo/vagragento.git
  2.  
  3. cd vagragento
  4.  
  5. vagrant inti

Después de que se haya provisionado la máquina tendrás un entorno con las aplicaciones mas necesarias para construir un correcto entorno de desarrollo instaladas  Mysql, Apache, Capistrano, ComposerGit,  N98-Magerun, PHP, XDEBUG, etc.

 Importante: No provisiones la máquina con los ficheros compartidos activados. 

My uso de Vagrant Magento

En la actualidad lo que estoy haciendo es utilizar la máquina virtual con directorios virtuales, por aclarar: estaría utilizando la capa de servidor Web ( Apache, mysql, xhprof, etc.).

Estoy utilizando dos directorios compartidos entre la máquina Host y la máquina invitada:

  • El directorio Web /var/www donde están los Magentos y que son compartidos con la máquina virtual mediante NFS
  • El directorio con las configuraciones de los sitios web, carpeta que normalmente suele estar en /etc/apache/site-available/

Como vale mas una imagen que mil palabras y creo que es un poco lioso, a continuación un esquema de como quedaría la solución que se propone para vagrant Magento.

vagrant Magento

 

El Proyecto Vagragento

¿Cuál es la idea? Pues crear y mantener un proyecto en la medida de lo posible que proporcione un entorno de desarrollo que sera:

  • Rápido de crear
  • Actualizable
  • Fácil de Mantener
  • proyecto colabrativo
  • etc.

Así nació creando un proyecto en github y que cualquier persona que se anime a aportar que se sienta libre de hacerlo. La página del proyecto luce tal que así

Proyecto Vagrant Magento

 

Y el enlace del proyecto lo podrás encontrar aquí

Conclusiones

Si estás utilizando el enfoque que comento de compartir el directorio mediante NFS entre la máquina Host y la máquina Virtual y además estás trabajando con Magento, tendrás un rendimiento mucho menor de lo habitual. Esto es debido al directorio compartido y que Magento realiza muchas operaciones de lectura/escritura en disco. En mi caso, me compensa poder tener una máquina con la que puedo hacer todo lo que quiera.

Si no te convence la velocidad que estás obteniendo, te recomiendo que migres los proyectos a la propia máquina y utilices la sincronización via RSYNC para sincronizar los directorios en el provisionado de la máquina y posteriormente trabajes con tu IDE como si se tratara de servidor al que te conectas vía FTP.

 

2 comentarios sobre “Vagrant y Magento – El placer de hacer un rm -rf * /”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *