Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Integra MongoDB con Drupal

En esta guía, puedes aprender a crear un sistema de gestión de contenidos (CMS) Drupal que use MongoDB como su base de datos. Drupal es un CMS web de código abierto escrito en PHP que ofrece funcionalidades de autoría de contenido, composibilidad y autenticación.

Los sitios web que ofrecen experiencias personalizadas a los usuarios requieren capacidades sólidas para la autenticación de usuarios. Los sitios que tienen muchos usuarios autenticados pueden experimentar problemas de rendimiento al recuperar datos de entidades de varias tablas en una base de datos relacional. MongoDB elimina la necesidad de realizar uniones de tablas complicadas y aumenta la velocidad de recuperación de datos para funcionalidades como tableros personalizados y feeds de contenido dinámico.

Cuando se usa MongoDB como base de datos para el sitio, Drupal almacena las entidades como documentos JSON que incluyen todas las revisiones, traducciones y datos de campo. Esta estructura de datos flexible reduce la latencia y permite experiencias personalizadas y basadas en datos para los usuarios.

MongoDB ofrece las siguientes funcionalidades que mejoran tus sitios Drupal:

  • Escalado horizontal: distribución de cargas entre varios servidores, haciendo que tu base de datos sea escalable para bases de usuarios grandes.

  • Almacenamiento de archivos integrado: almacenar archivos de usuario directamente en la base de datos en lugar de en el servidor web, lo que simplifica la gestión del alojamiento.

  • Búsqueda de texto completo: Aprovecha la tecnología y evita implementar soluciones de búsqueda independientes. MongoDB Search feature.

  • Capacidades de IA: Realice búsquedas vectoriales e integre servicios de IA mediante el uso de la funcionalidad MongoDB Vector Search.

En este tutorial, se construye un CMS de Drupal que utiliza MongoDB para almacenar los datos del sitio de Drupal. Cree un sitio Drupal alojado localmente, añada un artículo al sitio y visualice los datos del artículo en MongoDB.

Tip

Este tutorial utiliza un set de réplicas de MongoDB local y un sitio alojado localmente. Para ver un tutorial similar que utiliza un clúster MongoDB Atlas M10 y un servidor AWS EC2, consulta el artículo de DEV Cómo ejecutar Drupal en MongoDB.

Sigue los pasos de esta sección para instalar las dependencias del Proyecto, implementar un set de réplicas de MongoDB y configurar Drupal.

1

Para crear la aplicación Quick Start, instala el siguiente software en tu entorno de desarrollo:

Requisito previo
notas

Esta es una herramienta de gestión de dependencias de PHP.

Sigue las instrucciones que correspondan a tu sistema operativo.

Instala MongoDB localmente para ejecutar un set de réplicas.

Instalar mongodbla extensión PHP de MongoDB. Siga las instrucciones en la documentación de la extensión que correspondan a su sistema operativo.

Este tutorial usa el MongoDB Shell (mongosh) para ver e interactuar con los datos. Selecciona tu sistema operativo y método de instalación, luego sigue las instrucciones.

Usa la versión 8.3 o posterior.

Aplicación de terminal y shell

Para usuarios de MacOS, utilice la Terminal o una aplicación similar. Para usuarios de Windows, utilice PowerShell o Command Prompt.

2

Para utilizar MongoDB con Drupal, debes ejecutar un set de réplicas de MongoDB. Realiza los siguientes pasos para preparar e iniciar un set de réplicas local de tres nodos:

  1. Aumente su valor ulimit para resolver las limitaciones de recursos del sistema.

    Drupal crea múltiples archivos e índices en un corto período de tiempo. Desde tu terminal, ejecuta el siguiente comando para establecer el ulimit en 64000, lo cual previene que tu set de réplicas falle:

    ulimit -n 64000
  2. Implemente su set de réplicas.

    Tras aumentar el ulimit, sigue las instrucciones del tutorial Implementa un set de réplicas autogestionado para pruebas y desarrollo para implementar e inicializar un set de réplicas. Asegúrate de que tu set de réplicas se llame rs0 y tenga tres nodos ejecutándose en los puertos 27017, 27018 y 27019.

3

Tip

Usa el controlador PHP

Si prefieres crear un usuario de base de datos usando el driver PHP de MongoDB en lugar de mongosh, pasa el comando createUser al método MongoDB\Database::command(). Para aprender más, consulta Ejecutar un comando de base de datos en la documentación del driver.

Crea un usuario con los permisos necesarios para la base de datos de Drupal realizando los siguientes pasos.

  1. Ejecuta el siguiente comando desde tu terminal para conectarte a tu set de réplicas en mongosh:

    mongosh "mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=rs0"
  2. En la shell mongosh, ejecuta el siguiente comando para ingresar a la base de datos admin:

    use admin
  3. Luego, ejecuta el siguiente comando desde tu shell para crear un usuario:

    db.createUser({
    user: "<database username>",
    pwd: "<database user password>",
    roles: [
    { role: "readWrite", db: "drupal" },
    { role: "dbAdmin", db: "drupal" }
    ]
    })

    Reemplace <database username> y <database user password> con sus credenciales preferidas. Guarda estos valores para usarlos en pasos futuros.

4

Desde una nueva ventana de terminal, ejecuta los siguientes comandos para crear un proyecto de Drupal llamado drupal-quickstart:

composer create-project drupal/recommended-project:11.1.5 drupal-quickstart
cd drupal-quickstart

Luego, instala el módulo MongoDB ejecutando el siguiente comando:

composer require drupal/mongodb:^3.1

Después de instalar Drupal, sigue los pasos en esta sección para permitir que tu aplicación funcione con MongoDB.

1

Los archivos PHP del núcleo de Drupal requieren un parche para funcionar con MongoDB. Dirígete a tu directorio drupal-quickstart/web y aplica el parche ejecutando los siguientes comandos:

cd web
git apply -v modules/contrib/mongodb/patches/drupal-core-11.1.5.patch
cd ..
2

Desde tu directorio drupal-quickstart, navega al subdirectorio web/sites/default y ejecuta los siguientes comandos:

cd web/sites/default
cp default.settings.php settings.php
chmod 777 settings.php
cd ../../..

Estos comandos copian el archivo de configuración por defecto en un nuevo archivo llamado settings.php y actualizan los permisos de este archivo para permitir que Drupal guarde nuevo contenido.

3

Para permitir que Drupal modifique tus archivos públicos, crea el directorio files y establece sus permisos ejecutando los siguientes comandos desde tu directorio drupal-quickstart:

mkdir -p web/sites/default/files
chmod -R 777 web/sites/default/files

Luego, especifica la ubicación de estos archivos verificando que tu archivo web/sites/default/settings.php contenga el siguiente valor:

$settings['file_public_path'] = 'sites/default/files';

Tip

Si el valor anterior está comentado en settings.php, descoméntalo.

Sigue los pasos de esta sección para completar la instalación de Drupal utilizando el asistente de configuración de Drupal.

1

Desde tu directorio drupal-quickstart, ejecuta el siguiente comando para iniciar el servidor web PHP integrado:

php -S localhost:8080 -t web

Si es exitoso, este comando muestra la siguiente información:

[Date Time] PHP 8.3.0 Development Server (http://localhost:8080) started
2

Abre http://localhost:8080 en tu navegador web para iniciar el asistente de instalación de Drupal. A continuación, configura tu proyecto seleccionando las siguientes respuestas.

Tip

Si tu sitio muestra un mensaje de error sobre la conversión (boolean) obsoleta y no canónica, ubica la siguiente línea en el archivo DocParser.php de tu proyecto:

$this->ignoreNotImportedAnnotations = (boolean) $bool;

Reemplaza esta línea con el siguiente código:

$this->ignoreNotImportedAnnotations = (bool) $bool;
  1. En la página Seleccionar lenguaje, selecciona inglés y haz clic en Guardar y continuar.

  2. En la página Elegir perfil, mantén seleccionado Estándar y haz clic en Guardar y continuar.

  3. En la página Configurar la base de datos, selecciona MongoDB como tipo de base de datos y proporciona la siguiente información:

    • Nombre de la base de datos: drupal

    • Nombre de usuario de la base de datos: El nombre de usuario de la base de datos que configuraste con el comando createUser en un paso anterior

    • Contraseña de la base de datos: La contraseña de la base de datos que configuraste con el comando createUser en un paso anterior

    • Formato de conexión SRV: Deje sin marcar

    • set de réplicas de la base de datos: rs0

    • Host #1: localhost, puerto 27017

    • Host #2: localhost, puerto 27018

    • Host #3: localhost, puerto 27019

    Haz clic en Guardar y continuar.

  4. Drupal instala los módulos requeridos. Esto puede tardar varios minutos.

  5. En la página Configurar sitio, proporciona la siguiente información:

    • Nombre del sitio: Ingrese Drupal on MongoDB.

    • Dirección de correo electrónico del sitio: Ingresa cualquier dirección de correo electrónico. Puedes usar una dirección inexistente.

    • Nombre de usuario: Elija un nombre de usuario de administrador.

    • Contraseña: Elige una contraseña segura.

    • Recibe notificaciones por correo electrónico: Desmarca esta casilla.

    Haz clic en Guardar y continuar.

3

Después de instalar Drupal y configurar el sitio, Drupal ya no necesita acceso de guardar a los archivos de configuración. Para asegurar estos archivos, ejecute los siguientes comandos desde su directorio drupal-quickstart:

chmod 555 web/sites/default
chmod 444 web/sites/default/settings.php

Después de completar la instalación, sigue los pasos de esta sección para crear contenido y almacenar sus datos en MongoDB.

1

Después de completar la instalación, tu sitio se redirigirá a la página de inicio de Drupal. Tu sitio se asemeja a la siguiente imagen:

Captura de pantalla de la página principal de Drupal después de la instalación inicial

Tip

Estilo del sitio web.

Si tu sitio de Drupal muestra HTML sin formato ni estilo, es posible que debas desactivar la agregación de CSS y JavaScript. Para desactivar la agregación, visita http://localhost:8080/admin/config/development/performance en tu navegador y desmarca la Aggregate CSS files y Aggregate JavaScript files cajas.

2

Haz clic en Content en la barra de navegación en la parte superior de la página. Luego, haz clic en Añadir contenido > Artículo.

3

En la página Create Article, realiza las siguientes acciones:

  1. En la sección Title, introduce "Welcome to My Drupal Site".

  2. En la sección Body, introduce el siguiente texto:

    This is my first article on Drupal with MongoDB!
    All content is stored as JSON documents in MongoDB.
  3. Seleccione Menu settings y marque la casilla Provide a menu link.

  4. Haga clic en Save.

4

Después de guardar, puedes ver tu artículo publicado. Tu sitio se asemeja a la siguiente imagen:

Captura de pantalla de la página de artículos de Drupal
5

Tip

Usa el controlador PHP

Si prefieres ver colecciones y datos de contenido utilizando el controlador de PHP en lugar de mongosh, utiliza los métodos MongoDB\Database::listCollections() y MongoDB\Collection::find(). Para obtener más información, consulta la siguiente documentación del controlador PHP:

Para verificar que su contenido esté almacenado en MongoDB, realice los siguientes pasos:

  1. Abre una nueva ventana de terminal y conéctate a tu set de réplicas de MongoDB en mongosh.

    Ejecute el siguiente comando desde su terminal:

    mongosh "mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=rs0"
  2. Entra en la base de datos drupal y visualiza las colecciones.

    Ejecute los siguientes comandos en su terminal de mongosh:

    use drupal
    show collections

    Drupal crea varias colecciones para almacenar diferentes tipos de contenido, incluyendo lo siguiente:

    • nodeAlmacena nodos de contenido

    • usersAlmacenar cuentas de usuario

    • configalmacena los datos de configuración

  3. Ver tus datos de artículo.

    Para ver información sobre tu artículo, ejecuta el siguiente comando en tu terminal mongosh:

    db.node.find().pretty()
    [
    {
    _id: ObjectId('...'),
    nid: 1,
    vid: 1,
    type: 'article',
    uuid: '...',
    langcode: 'en',
    node_all_revisions: [
    {
    ...
    }
    ],
    node_current_revision: [
    {
    ...
    }
    ],
    node_latest_revision: [
    {
    ...
    title: 'Welcome to My Drupal Site',
    created: ...,
    changed: ...,
    promote: true,
    sticky: false,
    default_langcode: true,
    revision_default: true,
    revision_translation_affected: true,
    node_latest_revision__body: [
    {
    bundle: 'article',
    deleted: false,
    langcode: 'en',
    entity_id: 1,
    revision_id: 1,
    delta: 0,
    body_value: '<p>This is my first article on Drupal with MongoDB!<br>All content is stored as JSON documents in MongoDB.</p>',
    body_summary: '',
    body_format: 'basic_html'
    }
    ],
    node_latest_revision__comment: [
    {
    bundle: 'article',
    deleted: false,
    langcode: 'en',
    comment_status: 2,
    entity_id: 1,
    revision_id: 1,
    delta: 0
    }
    ]
    }
    ]
    }
    ]

    Este comando devuelve un documento JSON que contiene el texto y los metadatos de tu artículo.

¡Felicidades por completar el tutorial de inicio rápido de Drupal!

Después de completar estos pasos, tendrás un Drupal CMS que se conecta a su set de réplicas MongoDB local y almacena contenido como documentos JSON.

Para obtener más información sobre Drupal y MongoDB, consulta los siguientes recursos:

Volver

Symfony Integration

En esta página