Drupal 8 Workshops 2019–2020

@davidjguru
9 min readNov 17, 2019

--

Una máquina virtual para practicar con Drupal

Índice
-----------------
1- Introducción
2- Drupal.OVA
3- Instalar VirtualBox
4- Importar Drupal.OVA
5- Características del Sistema
6- Características del entorno
7- Herramientas y recursos disponibles
8- Otras cosas importantes
9- Consejos y lecturas recomendadas

0- TL;DR

Instálate VirtualBox en tu ordenador y luego descarga esta máquina virtual e importala desde ahí.

https://www.virtualbox.org/wiki/Downloads+

https://drive.google.com/drive/folders/1DWTsw0Amzw2f-muGgK5OKo5HIhZZ0RQK?usp=sharing+

Slides del workshop: https://docs.google.com/presentation/d/1_QTJ9xd_YWNF4Ly-zoSg1jeAbXy5_XtsBoYbBL0UG-Q/edit?usp=sharing+

1- Introducción

Parece que durante un semestre y con cierta continuidad, estaré intentando explicar como funciona Drupal en distintos lugares y entornos. Por un cúmulo de circunstancias, oportunidades y ausencia total de sentido del peligro, entre el último trimestre de 2019 y el primero de 2020 estaré intentando transmitir de la mejor manera posible (esas risas) como funciona Drupal y como podemos enfocar proyectos basados en Drupal 8.

Bien, en mi experiencia unas de las limitaciones principales en un taller es el tiempo dedicado a configuraciones en general y en particular a cierto alineamiento básico de entornos, lo suficiente como para que el hecho de dar soporte in situ no devore el tiempo de práctica y ejercicio. Así que pensando en ello estuve probando soluciones multiplataforma, pre-configuradas y que permitieran asimilar rápido a personas con poca experiencia en virtualización / containerización, así como salvar todas las tediosas partes habituales de instalaciones — configuración.

Pero no hubo mucha suerte: lo que resultaba ágil por un lado, limitaba mucho el funcionamiento por otro. Lo que terminaba con un Drupal desplegado en el navegador web, luego resultaba un infierno en cuestión de instalaciones y acceso por línea de comandos. Necesitaba algo transversal, preconfigurado, ágil y con todo el trabajo inicial ya realizado.

Así que como casi ninguna solución existente me convencía para estos fines, construí la mía propia: me decidí a montar mi propia máquina virtual para estas actividades, una drupal.ova lista para importar en VirtualBox y empezar a prácticar, con todo lo necesario ya de serie.

2- Drupal.OVA

Es una máquina virtual preparada para trabajar con Drupal, principalmente con fines formativos (luego cuando veamos la configuración de la máquina virtual entenderemos mejor esto), de cara a intentar reducir al mínimo posible los tiempos dedicados a instalaciones, incompatibilidades y ajustes para construir entornos operativos suficientes. En mi experiencia, esto suele consumir mucho tiempo en workshops específicos y además evita el desajuste entre sistemas operativos diferentes (Windows, Mac, Linux en distintas distros): todos y todas partirán del mismo punto inicial e (idealmente) reducirá tiempos para poder enfocarnos en lo que realmente importa: practicar, practicar y practicar.

Bien, el sistema elegido para poder realizar un alineamiento de entornos sencillo y ágil es el de la Virtualización Hardware, y en concreto VirtualBox (https://www.virtualbox.org+), un software de virtualización preparado para ejecutar la máquina virtual que he preparado para practicar. El trato es el siguiente: tú te comprometes a instalar este software en su ordenador y yo me aseguro que a partir de ahí tendrás un Drupal limpio y listo para practicar con él. ¿Hace? Bien, sigamos.

¿Qué hay que hacer? ¿Cuáles son tus tareas?

3- Instalar VirtualBox

Solo necesitarás descargar inicialmente una versión adecuada de VirtualBox, aquella que coincida con tu sistema operativo. Puedes ir aquí y ver el listado disponible, seleccionando la que coincida con tu SO: https://www.virtualbox.org/wiki/Downloads+

Si ya tienes claro como va, te paso enlaces a secciones concretas de descarga:

Y si tienes algún problema o necesidad específica, aquí tienes instrucciones sobre la instalación (https://www.virtualbox.org/manual/ch02.html+) y aquí tienes disponible un manual de usuario (RTFM!): https://download.virtualbox.org/virtualbox/6.0.14/UserManual.pdf+

Nota: Si estás en Ubuntu, en el centro de software puedes encontrar disponible una versión de VirtualBox disponible:

VirtualBox disponible en el repositorio central de software de Ubuntu (no recomendada)

Pero no es exactamente la misma versión que esta que se anota arriba, es la 5.2.32, y puede tener problemas de compatibilidad.

De todas las opciones de instalación disponibles (estando en Ubuntu) recomiendo por rápida y más sencilla descargar el archivo con extensión .deb del listado anterior de Oracle (casi 100MB de peso), hacer click sobre la descarga e iniciar el proceso de instalación.

Instalación del paquete descargado de VirtualBox 6.0.14

Por favor, descarga e instala VirtualBox antes de asistir a la actividad, será más fácil y ocuparemos menos ancho de banda.

4- Importar Drupal.OVA

A continuación, toca instalar la máquina virtual de trabajo, un fichero algo pesado (en torno a 4GB en el momento de escribir estas líneas) con extensión .ova que una vez importada desde tu instalación de VirtualBox, levantarán un entorno completo de prácticas.

Puedes descargarla de aquí: https://drive.google.com/drive/folders/1DWTsw0Amzw2f-muGgK5OKo5HIhZZ0RQK?usp=sharing+

(si en el momento de acceder ves la carpeta vacía, es que se debe estar importando una nueva versión de la máquina virtual, espera un poco y en un ratico ya estaría, paciencia).

Y una vez descargada, importala desde la interfaz de VirtualBox:

Importar máquina virtual desde VirtualBox

Esta Máquina Virtual tiene una configuración inicial lista para funcionar y que no repercutirá demasiado sobre el sistema anfitrión, en el sentido de que se le asignan no demasiados recursos, con la idea de que pueda funcionar en entornos de hardware más limitados: esta es nuestra Drupal.OVA :-)

Wallpaper totalmente sustituible a la menor ocasión. Skill de diseño se vende por separado.

En general, se ha construido pensando en una estructura mínima pero suficiente como para practicar con Drupal, empezando por un sistema operativo Ubuntu sobre el que se ha montado un entorno LAMP (Linux, Apache, MySQL y PHP) ya también configurado a nivel de módulos Apache, VirtualHost, base de datos y la propia instalación de Drupal.
De igual manera, por si se quiere incluir en los fines formativos, se ha instalado virtualización software basada en Docker: Docker, Docker-Composer y DDEV para la generación de entornos pre-cocinados Drupal — Docker. Podrás prácticar con contenedores Docker en esta Máquina Virtual.

Vamos a repasar las características de la Máquina Virtual que he preparado para practicar.

5- Características del Sistema

  • SO: Ubuntu 18.04.2 — amd64
  • Kernel version: 5.0.0–32-generic
  • Hard Disk: 31 GB / 20GB libres
  • RAM: 5'5 GB
  • Video Memory: 64MB
  • Language: Spanish, es_ES
  • Keyboard config: es_ES
  • Ubuntu login: user: drupal, password: drupal1$
  • Ubuntu machine name: drupal-workshop
  • VirtualBox 6.0.6 Guest Additions for Linux

En primer lugar, una distribución Ubuntu sobre un hardware limitado pero capaz de ejecutarlo con relativa facilidad. Con una asignación de RAM que no cause demasiado problemas al sistema anfitrión y que pueda asignarse en portátiles con algo de antiguedad, al igual que la memoria de vídeo o el disco duro con reserva dinámica. Teclado e idioma configurado para un target habituado al castellano y el disco de funcionalidades extras de VirtualBox ya instalado (podrás abrir una segunda pantalla si tienes un monitor extra conectado, por ejemplo).

Ahora vamos a ver algunas características más:

6- Características del Entorno

  • Apache web server: Apache/2.4.29 (Ubuntu)
  • MySQL server: 5.7
    Access root: sudo mysql (direct access)
    Access user: drupal_workshop, password: drupal1$
    Login by prompt: mysql -udrupal_workshop -pdrupal1$
    Database name: testdatabase
  • PHP 7.2.24
  • Drupal Core: 8.7.10
  • Composer (Global): 1.9.1
  • Drush: Drush Commandline Tool 9.7.1
  • Drupal Console version 1.9.4

En el siguiente nivel un entorno LAMP clásico (seleccionado Apache antes que Nginx para fines formativos), con MySQL como motor de base de datos, PHP a 7.2 y la terna de herramientas más frecuente para trabajar con Drupal en el día a día: Composer, Drush y Drupal Console).

Tendrás acceso a la carpeta del proyecto llamada ‘drupal.localhost’ en la ruta:

/var/www/html/drupal.localhost

Y desde allí ya podrás usar los comandos de Drush y Drupal Console (ya están registrados como alias desde el .bashrc del /home).

El sitio web Drupal 8 fue creado a través de Composer y Drush con las siguientes instrucciones, por lo que los datos de acceso a Drupal serán: admin / admin

composer create-project drupal-composer/drupal-project:8.x-dev drupal.locahost \
— stability dev \
— no-interaction \
&& cd drupal.localhost \
&& drush site-install standard \
--db-url=’mysql://drupal_workshop:drupal1$@localhost/testdatabase’\
--site-name='Drupal Workshop' \
--account-name=admin \
--account-pass=admin \
--account-mail=yourmail@mail.com \
--locale=en \
--yes

Igualmente, desde el navegador web podrás acceder al Drupal (Apache se levanta solo como servicio al arrancar el sistema) directamente en la dirección:

drupal.localhost
drupal.localhost directo en navegador

(También tienes la dirección cargada en los marcadores de Chrome y Firefox, por si acaso).

7- Herramientas y recursos disponibles

  • VSCodium: version 1.39.2
  • Firefox — 65.0
  • Chrome — 78.0.3904.87
  • Docker — version 19.03.5
  • Docker-Compose — docker-compose version 1.24.1
  • DDEV — ddev version v1.11.2
  • Editores de textos: Gedit, VIM
  • Cliente Base de datos (gráfico) MySQLWorkbench 6.3.8 (conexión ya configurada)
  • Capturas de pantalla / edición básica de imágenes: Shutter

Como herramientas, he instalado la versión de VSCode que está compilada sin telemetría (VSCodium no envía datos tuyos de uso a Microsoft) pero a nivel de interfaz y extensiones no hay diferencias significativas con VSCode. También dos navegadores web, toda la estructura para que funcionen Docker y Docker Composer y de manera complementaria DDEV para trabajar con contenedores pre-cocinados de despliegue rápido en entornos locales. Por último dos editores de texto (Gedit — visual- y Vim -consola-) y un cliente gráfico de bases de datos MySQLWorkbench, por aquello de no asustar demasiado con consola y comandos a las personas que se introducen en Drupal.

8- Otras cosas importantes

Configuración Xdebug: El depurador PHP más mítico, Xdebug está disponible en la dirección /etc/php/7.2/mods-available

XDebug — version 2.6.0

Y configurado de la siguiente manera a partir de xdebug.ini:

zend_extension=xdebug.so
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_host = 127.0.0.1
xdebug.remote_log = /tmp/xdebug_remote.log
xdebug.remote_mode = req
xdebug.remote_port = 9000
xdebug.max_nesting_level = 300
xdebug.idekey = VSCODE

Con XDebug extension para Chrome, versión 1.6.1, y las siguientes extensiones en VSCodium:

VSCodiumphpcs - 1.0.7
Debugger for Chrome - 4.12.1
PHP DocBlocker - 2.0.1
empty-indent 0.2.0
PHP Debug - 1.13.0
PHP Intelephense - 1.2.3
Composer 0.7.1
Twig Language 2 - 0.9.0
Drupal 8 Snippets - 0.0.2
Drupal 8 Javascript Snippets - 0.0.2
Drupal 8 Twig Snippets - 1.0.2

El CodeSniffer se ha sincronizado con la librería externa a través de Composer de manera global y con este proyecto de manera local, y está activado a todo lo que da, de tal manera que no te dejará pasar ni una coma mal puesta ni una indentación irregular. Aprenderemos code-styling a golpe de raya roja bajo el código.

De igual manera, se han instalado en Drupal los siguientes módulos básicos:

admin_toolbar
devel
devel_generate
kint
webprofiler

Y le he puesto a Drupal un módulo custom de tipo “HelloWorld” creado en /modules/custom, con nombre “hello_world”, ya instalado, con un routing definido a /hello-world, es decir en: drupal.localhost/hello-world, donde muestra un mensaje “Hello World First Route”.

Vista del módulo custom hello_world en /admin/modules

De forma complementaria tiene un par de breakpoints ya colocados en la respuesta de ese controlador, para observar directamente la mecánica de depuración en Drupal desde VSCodium:

9- Consejos y lecturas recomendadas

Si quieres profundizar un poco más con el uso de esta máquina virtual y sus configuraciones y recursos, aqui te anoto algunos artículos complementarios sobre herramientas instaladas. De igual manera, si tienes algún problema con esta máquina virtual, te invito a escribirme a davidjguru@gmail.com o vía twitter @davidjguru+ e intentaré darte feedback en cuanto pueda.

--

--

@davidjguru
@davidjguru

Written by @davidjguru

I’m @davidjguru this is my off-broadway channel, speaking about Drupal like in https://www.therussianlullaby.com or https://davidjguru.github.io but in spanish.

No responses yet