Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Integra MongoDB con Drupal

En esta guía, aprenderá a crear un sistema de gestión de contenido (CMS) Drupal que utiliza MongoDB como base de datos. Drupal es un CMS web de código abierto escrito en PHP que ofrece funciones de creación de contenido, componibilidad 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.

Al usar MongoDB como base de datos de su 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 facilita 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: evite implementar soluciones de búsqueda independientes aprovechando la Funciónde búsqueda de MongoDB.

  • 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 usar MongoDB con Drupal, debe ejecutar un conjunto de réplicas de MongoDB. Siga estos pasos para preparar e iniciar un conjunto 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 poco tiempo. Desde la terminal, ejecute el siguiente comando para establecer ulimit en 64000, lo que evita que su conjunto de réplicas se bloquee:

    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

Utilice 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.

Cree 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 el shell mongosh, ejecute 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 predeterminado en un nuevo archivo llamado settings.php y actualizan los permisos de este archivo para permitir que Drupal escriba contenido nuevo.

3

Para permitir que Drupal modifique sus archivos públicos, cree el directorio files y configure sus permisos ejecutando los siguientes comandos desde su directorio drupal-quickstart:

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

Luego, especifique la ubicación de estos archivos verificando que su 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

Abra http://localhost:8080 en su navegador web para iniciar el asistente de instalación de Drupal. Luego, configure su 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 configuró con el createUser comando en un paso anterior

    • Contraseña de labase de datos: la contraseña de la base de datos que configuró con el createUser comando 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 necesarios. 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: Ingrese cualquier dirección de correo electrónico. Puede usar una dirección inexistente.

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

    • Contraseña: Elija 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

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 Content clic en en la barra de navegación de 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, ingrese 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

Utilice el controlador PHP

Si prefiere ver colecciones y datos de contenido usando el controlador PHP en lugar de mongosh, utilice los métodos MongoDB\Database::listCollections() y MongoDB\Collection::find(). Para obtener más información, consulte 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. Ingrese a la base de datos drupal y visualice 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

    • users: Almacena cuentas de usuario

    • config: Almacena datos de configuración

  3. Ver tus datos de artículo.

    Para ver información sobre su artículo, ejecute el siguiente comando en su 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