Instalación de Drupal 8 mediante composer/drupal-project

09/05/2018
instalacion Drupal 8 composer

Instalar Drupal debería ser un proceso sencillo, rápido en el que no acabemos con demasiados quebraderos de cabeza durante la instalación y a la hora de resolver dependencias en nuestro proyecto. Vamos a analizar uno de los métodos de instalación más útiles de cara al desarrollo entre entornos.

¿Por qué elegir Composer?

Como sabes, existen varios métodos para instalar Drupal 8 además de composer. Entre ellos encontramos, la instalación tradicional, que se realiza descargando la última release estable de Drupal para desplegarla en nuestro servidor web; o la instalación por drush, que permite la descarga e instalación de drupal a través de la consola.

Sin embargo, teniendo composer instalado de forma global o en un único proyecto, podemos hacer uso de templates creadas por la comunidad para llevar a cabo la descarga de una versión en concreto de drupal. Al usar composer podemos gestionar después cómodamente las dependencias de nuestro proyecto, los temas, librerías, módulos, plugins, actualizaciones de core… Este método es de los más usados actualmente debido a la comodidad y flexibilidad que proporciona al desarrollador a la hora de desplegar un proyecto en varios entornos diferentes, debido a que cualquier proyecto usará una misma plantilla de versiones (composer.lock) y cualquier desarrollador podrá actualizar su proyecto fácilmente según esa plantilla (composer install)

¿Qué es “drupal-project”?

Drupal-project es una template o plantilla realizada en composer que podemos localizar por github, cuyo primer commit tuvo lugar el 9 de Abril de 2015 por el usuario webflo. Desde entonces ha estado siendo actualizada por este usuario y más de 30 contribuidores. A día de hoy la template te permite elegir qué versión de Drupal instalar, además de actualizar el core, descargar librerías, temas, módulos, aplicar parches de una forma muy sencilla. También destacar que los módulos contribuidos entraría en el .gitignore, por lo que nos ahorraríamos versionar mucho código. Además, vienen instaladas utilidades que luego son de agradecer, como son drush y la drupal console.

Cómo instalar Drupal con composer/drupal-project

Comenzaremos la instalación de Drupal 8 en Ubuntu 16.04

En primer lugar, verificaremos los requisitos para instalar, en este caso, Drupal 8.

  • Servidor web, donde usaremos Apache

  • PHP 7.0+ (se recomienda usar 7.1 o 7.2)

  • Base de datos (usaremos MySQL)

Si no tenemos PHP 7.1 o 7.2 en el repositorio de ubuntu, podemos añadirlos de la siguiente forma:

$~sudo apt-get install -y python-software-properties

$~sudo add-apt-repository -y ppa:ondrej/php

$~sudo apt-get update -y

$~apt-cache pkgnames | grep php7.1

Es importante descargar las siguientes extensiones para no tener errores con drupal o composer relacionados con PHP:

  • php7.1

  • php7.1-xml

  • php7.1-mbstring

  • php7.1-mysql

  • php7.1-json

  • php7.1-curl

  • php7.1-cli

  • php7.1-gmp

  • php7.1-mcrypt

  • php7.1-gd

  • libapache2-mod-php7.1

Una vez cumplamos los requisitos, pasaremos a instalar composer globalmente.

$~php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

$~php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

$~php composer-setup.php

$~php -r "unlink('composer-setup.php');"

Esto nos generará un fichero llamado “composer.phar”, a no ser que le hayamos llamado distinto con el argumento --name. Ahora lo moveremos a /usr/local/bin para poder llamarlo globalmente.

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

Comprobaremos que lo tenemos correctamente instalado con el comando “composer -v”

composer

A continuación, pasaremos a lanzar el siguiente comando para descargar la versión 8.x de Drupal. Este proceso llevará algún tiempo dependiendo de la conexión de red, ya que se descargara todo el core de Drupal

$~composer create-project drupal-composer/drupal-project:8.x-dev drupal-project --stability dev --no-interaction

Una vez haya finalizado, moveremos la carpeta “drupal-project” para desplegarla en nuestro servidor web apache y le cambiaremos el nombre a nuestro gusto. La estructura de carpetas es la siguiente.

estructura de carpeta composer
  • composer.json → en él podemos gestionar las versiones del core de Drupal y de los módulos, temas, librerías… también podemos aplicar parches.

  • composer.lock → este fichero prioriza las versiones ante el composer.json, es decir, cuando versionemos ambos ficheros y se ejecute un “composer install” prevalecerán las versiones establecidas en el composer.lock.

  • drush/ → se encuentra la herramienta por línea de comandos drush. Para poder llamarla globalmente, es necesario descargar drush-launcher sino tendremos que llamarla con $./vendor/drush/drush/drush

  • scripts/ → pueden encontrarse scripts que facilitan la instalación y configuran los permisos adecuados

  • vendor/ → se encuentran las librerías externas que necesitan core y módulos contribuidos.

  • web/ → dentro se encuentra la instalación al completo. Es recomendable apuntar con el DocumentRoot a esta carpeta, por temas de seguridad.

Cambiaremos los permisos de la carpeta web/ en adelante.

$~sudo chown :www-data /web -R

En la configuración de apache, crearemos un nuevo virtualhost que apunte a drupal/web

configuración apache

y lo habilitaremos con el comando 

$a2ensite nombresitio.conf

Editaremos el fichero /etc/hosts con el nameserver que nosotros queramos.

editar fichero nameserver

Lanzaremos desde el navegador el nameserver http://dev.mydrupal.com/ y ya estaremos en la pantalla de instalación, donde seleccionaremos el idioma. En el siguiente paso, Drupal nos da a elegir el tipo de instalación. Es recomendable elegir la estándar, que viene con los módulos básicos y el tema por defecto, ya que la minimalista solo trae los ficheros mínimos, justos y necesarios.

En la pantalla de “Verify requirements” es posible que salgan errores de dependencias o permisos, que son necesarios resolver antes de seguir.

errors found

El error ‘Configuration directory: Sync’ nos advierte que el directorio /config/sync, donde se importará y exportará la configuración de Drupal, no está creado o tiene errores de permisos. En nuestro caso no está creado, así que lo crearemos en la raíz del proyecto.

raiz del proyecto

En el siguiente paso, debemos seleccionar la base de datos que usará Drupal. Así pues, crearemos una base de datos en mysql e introduciremos los datos en el navegador, para pasar a la última pantalla, la configuración del sitio. Desde aquí introduciremos los datos para el usuario administrador, el nombre del sitio, etc…

Conclusión

Ahora que ya tenemos un Drupal gestionado por composer, tendremos más facilidades a la hora de actualizar, eliminar, añadir o modificar cualquier versión de módulo, plugin, tema, librería o core. También podemos mover entre entornos el fichero composer.lock, que mediante la orden composer install, nos llevará a cabo una actualización (si es necesaria) de todo aquello a lo que no estemos actualizado en el proyecto del entorno actual. Este flujo de trabajo es clave, y en ese sentido vamos de la mano de composer.

COMPOSER