Overview
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.
¿Por qué usar MongoDB como la base de datos para sitios Drupal?
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.
Tutorial de inicio rápido
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.
Configurar el proyecto
Sigue los pasos de esta sección para instalar las dependencias del Proyecto, implementar un set de réplicas de MongoDB y configurar Drupal.
Verificar los prerrequisitos.
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 | |
Este tutorial usa el MongoDB Shell ( | |
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. |
Inicie un set de réplicas de MongoDB.
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:
Aumente su valor
ulimitpara 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
ulimiten64000, lo que evita que su conjunto de réplicas se bloquee:ulimit -n 64000 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 llamers0y tenga tres nodos ejecutándose en los puertos27017,27018y27019.
Cree un usuario de base de datos.
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.
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" En el shell
mongosh, ejecute el siguiente comando para ingresar a la base de datosadmin:use admin 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.
Instalar Drupal.
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
Configurar la integración de MongoDB
Después de instalar Drupal, sigue los pasos en esta sección para permitir que tu aplicación funcione con MongoDB.
Aplica el parche del núcleo de Drupal.
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 ..
Crea el archivo de configuración.
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.
Configura los permisos de los archivos.
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.
Configura tu sitio Drupal
Sigue los pasos de esta sección para completar la instalación de Drupal utilizando el asistente de configuración de Drupal.
Inicie el servidor de desarrollo PHP.
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
Completa la instalación web.
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;
En la página Seleccionar lenguaje, selecciona inglés y haz clic en Guardar y continuar.
En la página Elegir perfil, mantén seleccionado Estándar y haz clic en Guardar y continuar.
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:
drupalNombre de usuario de la base de datos: el nombre de usuario de la base de datos que configuró con el
createUsercomando en un paso anteriorContraseña de labase de datos: la contraseña de la base de datos que configuró con el
createUsercomando en un paso anteriorFormato de conexión SRV: Deje sin marcar
set de réplicas de la base de datos:
rs0Host #1:
localhost, puerto27017Host #2:
localhost, puerto27018Host #3:
localhost, puerto27019
Haz clic en Guardar y continuar.
Drupal instala los módulos necesarios. Esto puede tardar varios minutos.
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.
Proteja sus archivos de configuración.
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
Crear y ver contenido
Después de completar la instalación, sigue los pasos de esta sección para crear contenido y almacenar sus datos en MongoDB.
Ver su página de inicio de Drupal.
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:

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.
Crea un artículo.
En la página Create Article, realiza las siguientes acciones:
En la sección Title, introduce
"Welcome to My Drupal Site".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. Seleccione Menu settings y marque la casilla Provide a menu link.
Haga clic en Save.
Consulta tus datos en MongoDB.
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:
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" Ingrese a la base de datos
drupaly 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 contenidousers: Almacena cuentas de usuarioconfig: Almacena datos de configuración
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.
Recursos adicionales
Para obtener más información sobre Drupal y MongoDB, consulta los siguientes recursos:
Cómo ejecutar Drupal en MongoDB Tutorial de DEV con configuración completa de producción
Avances en la integración entre Drupal y MongoDB entrada de blog
Módulo MongoDB en el sitio web de Drupal
Drupal documentación
