Composerizar una instalación de Drupal

Enviado por Daniel Muñoz Egido el Mar, 10/04/2018 - 09:00
imagen con el logotipo de composer y drupal

Existe una manera muy fácil para "composerizar" una instalación de Drupal que se realizó sin emplear esta herramienta para la gestión de dependencias PHP.

La adopción de Symfony 2 como framework para la gestión de librerías y dependencias PHP supuso un importante cambio en la arquitectura de esta herramienta para la gestión de contenidos CMS. Sin embargo, muchos de nosotros, sobre todo si fuimos de los primeros en adoptar Drupal 8 e ir aprendiendo sus nuevas características sobre la marcha, instalamos esta herramienta con métodos y formas de la versión 7. Es decir, subiendo el software al servidor y desde allí iniciar la instalación.

Es cierto que Drupal 8 puede ser utilizado y administrado de esta manera para la gran mayoría de instalaciones existentes, pero en el caso de que empleemos algunos módulos contribuidos, cada vez más, que requiera de la gestión de dependencias PHP, nos veremos en la necesidad de empezar a emplear Composer para su gestión.

Pero, ¿si todavía no tengo claro que es Symfony, ahora hablamos de Composer? Composer es un manejador de dependencias de la forma en la que funcionan con Symfony, por lo tanto, nos basta con conocer el funcionamiento de Composer para poder trabajar con Drupal 8. Por ejemplo, cuando instalamos un módulo en nuestro sitio puede ser que éste requiera de una determinada librería o paquete PHP, que al mismo tiempo pueden necesitar de otras librerías o paquetes, etc. Con Composer automatizamos todos este proceso, ya que con solo una orden se instalarán todos lo paquetes y librerías necesarias para dicho módulo. Y al mismo tiempo, dichas librerías o paquetes pueden ser reutilizados por otras librerías o paquetes.

Pero todo no puede ser así de maravilloso. Para poder utilizar Composer necesitamos tener acceso por consola a nuestro servidor. Y esto no siempre es posible, sobre todo si hablamos de un proyecto modesto. Pero lo que sí podemos desarrollar fácilmente es un entorno de desarrollo localmente y realizar los cambios necesarios aquí y luego subirlos al servidor que sería nuestro entorno de producción. Esta manera de trabajar es habitual en grandes proyectos que requieren el despliegue de fuertes recursos.

Por lo tanto, a continuación vamos a describir  cómo convertir un proyecto de Drupal 8 creado manualmente en uno gestionado con Composer.

El primer paso es crearnos un entorno de desarrollo local si no lo tenemos. Para ello, en función de nuestro sistema operativo, podremos emplear herramientas como XAMPP o LAMPP (en este ejemplo usamos XAMPP sobre Linux). Existen excelentes manuales elaborados por las propias herramientas que nos explican como instalarlas. A continuación debemos instalar en nuestro equipo (si tenemos acceso por consola a nuestro servidor y tenemos permisos para ello, podemos instalarlo directamente en el servidor) Composer. Antes de ello, tenemos que tener en cuenta una serie de consideraciones:

  • Composer emplea PHP.
  • La versión de PHP que utilice Composer debe ser la misma que tengamos instalada en nuestro servidor en el caso de que éstas se encuentren en la misma máquina.

Por ello, si hemos creado un entorno de desarrollo local, debemos establecer un enlace símbólico al PHP instalado por XAMPP o LAMPP independientemente de si ya teníamos otra versión de PHP instalada en nuestro equipo. Para ello sólo debemos introducir el siguiente comando en nuestra terminal:

sudo ln -s /opt/lampp/bin/php /usr/local/bin/php

A continuación, descargamos el instalador de Composer y después lo movemos a la carpeta /usr/local/bin para poder ejecutarlo globalmente:

sudo curl -s https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Ahora, para comprobar que todo se ha realizado correctamente, solo debemos introducir la orden "composer" en nuestro terminal y recibiremos una respuesta como la siguiente:

 

composer.png

 

El siguiente paso que debemos realizar es instalar un plugin de Composer que es el que nos va a permitir realizar este proceso que hemos denominado de "composerización", llamado composerize-drupal. Para ello sólo deberemos introducir la siguiente orden en nuestro terminal:

composer global require grasmash/composerize-drupal

Ya tenemos todos los elementos para realizar el proceso. Supongamos que tenemos nuestro sitio web funcionando en un servidor remoto y nos hemos creado un entorno de desarrollo local en el cual vamos a trabajar. Para ello nos deberemos descargar vía FTP el sitio al completo a nuestro entorno de desarrollo local (en XAMPP por ejemplo es /opt/lampp/htdocs). Una vez descargado, accederemos vía terminal a la carpeta dónde éste se encuentre y ejecutaremos la siguiente orden:

composer composerize-drupal --composer-root=. --drupal-root=. --no-update

Con la orden anterior le estamos diciendo a Composer que "composerice" el Drupal que se encuentra en esta carpeta, ubicándose en la raíz de la instalación tanto el archivo composer.json y los directorios Core y Vendor. También le estamos diciendo que no actualice la instalación después de ejecutar la orden.

Una manera de ver los cambios que se han producido en nuestra instalación de Drupal es guardando una copia del archivo composer.json antes de realizar la orden y compararla con el mismo documentos tras su realización. A partir de este momento podremos emplear esta herramienta para la gestión de dependencias de nuestra instalación. Una vez realizadas las acciones que necesitemos, lo único que debemos hacer es subir de nuevo el sitio al completo a nuestro servidor y ejecutar la actualización de la base de datos accediendo a http://mi-sitio.com/update.php.

Existe otra forma de realizar esta misma acción empleado para ello drupal console, pero requiere conexión a la base de datos, con lo que también deberíamos descargarnos la base de datos a nuestro entorno de desarrollo, por lo que nos ha parecido mucho más sencillo la manera que hemos explicado en este pequeño manual.

Toda la información de este plugin se puede encontrar en:

 

 

Añadir nuevo comentario

Este campo sólo es para verificar que usted es una persona. No será almacenado ni utilizado con ningún otro propósito

HTML Restringido

  • Etiquetas HTML permitidas: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.

Documentación Hoy le informa que los datos facilitados por usted en este formulario serán tratados informáticamente por Documentación Hoy con el objetivo de publicar su comentario a este contenido. Para poder llevar a cabo esta acción necesitamos su consentimiento explícito. Los datos proporcionados se conservarán mientras no solicite el cese de la actividad. Los datos no se cederán a terceros salvo en los casos en que exista una obligación legal. En cualquier momento usted puede ejercitar su derecho a acceder, rectificar, limitar o borrar sus datos enviándonos un e-mail a info@documentacionhoy.com. Usted puede encontrar más información en nuestra Política de Privacidad.

CAPTCHA
Esta pregunta es para comprobar si usted es un visitante humano y prevenir envíos de spam automatizado.