Learn the "why" behind slow queries and how to fix them in our 2-Part Webinar.
Register now >
Menu Docs
Página inicial do Docs
/ /

Integre o MongoDB com o Drupal

Neste guia, você pode aprender a criar um sistema de gerenciamento de conteúdo (CMS) Drupal que utiliza MongoDB como seu banco de dados. O Drupal é um CMS da Web de código aberto escrito em PHP que oferece recursos de autoria de conteúdo, capacidade de composição e autenticação.

Websites que oferecem experiências de usuário personalizadas exigem funcionalidades robustas para a autenticação do usuário. Os sites que têm muitos usuários autenticados podem enfrentar problemas de desempenho ao recuperar dados de entidade de várias tabelas em um banco de dados relacional. O MongoDB elimina a necessidade de junções de tabela complicadas e aumenta a velocidade de recuperação de dados para recursos como painéis personalizados e feeds de conteúdo dinâmico.

Quando você usa o MongoDB como o banco de dados do seu site, o Drupal armazena entidades como documentos JSON que incluem todas as revisões, traduções e dados de campo . Essa estrutura de dados flexível diminui a latência e oferece suporte a experiências personalizadas e baseadas em dados para os usuários.

O MongoDB oferece os seguintes recursos que melhoram seus sites Drupal:

  • Dimensionamento horizontal: distribua cargas em vários servidores, tornando seu banco de dados escalável para grandes bases de usuários.

  • Armazenamento de arquivos integrado: armazene os arquivos do usuário diretamente no banco de dados em vez de no servidor da web, simplificando a hospedagem.

  • Full-text search: evite implementar soluções de pesquisa separadas aproveitando o recurso de pesquisa do MongoDB.

  • Recursos de IA: execute pesquisas vetoriais e integre serviços de IA usando o recurso MongoDB Vector Search.

Neste tutorial, você constrói um CMS do Drupal que utiliza MongoDB para armazenar os dados do seu site do Drupal. Você cria um site Drupal hospedado localmente, adiciona um artigo ao site e visualiza os dados do artigo no MongoDB.

Dica

Este tutorial utiliza um conjunto de réplicas MongoDB local e um site hospedado localmente. Para ver um tutorial semelhante que usa um cluster MongoDB Atlas M10 e um servidor AWS EC2, consulte o artigo Como executar o Drupal no MongoDB DEV.

Siga as etapas nesta seção para instalar as dependências do projeto, implantar um conjunto de réplicas MongoDB e configurar o Drupal.

1

Para criar o aplicativo Quick Start, instale o seguinte software em seu ambiente de desenvolvimento:

Pré-requisitos
Notas

Esta é uma ferramenta de gerenciamento de dependência do PHP.

Siga as instruções correspondentes ao seu sistema operacional.

Instale o MongoDB localmente para executar um conjunto de réplicas.

Instale o mongodb, a extensão MongoDB PHP. Siga as instruções na documentação da extensão que corresponde ao seu sistema operacional.

Este tutorial utiliza o MongoDB Shell (mongosh) para visualização e interação com dados. Selecione seu sistema operacional e método de instalação e siga as instruções.

Use a versão 8.3 ou posterior.

Aplicativo de terminal e shell

Para usuários do MacOS, use o Terminal ou um aplicativo semelhante. Para usuários do Windows, use o PowerShell ou Prompt de Comando.

2

Para usar o MongoDB com o Drupal, você deve executar um conjunto de réplicas do MongoDB . Execute as seguintes etapas para preparar e iniciar um conjunto de réplica de três nós local:

  1. Aumente seu valor de ulimit para resolver as limitações de recursos do sistema.

    O Drupal cria vários arquivos e índices em um curto período de tempo. No terminal, execute o seguinte comando para definir ulimit como 64000, o que impede que o conjunto de réplicas falhe:

    ulimit -n 64000
  2. Implemente seu conjunto de réplicas.

    Após aumentar seu ulimit, siga as instruções no tutorial Implantar um conjunto de réplicas autogerenciado para teste e desenvolvimento para implantar e inicializar um conjunto de réplicas. Verifique se o seu conjunto de réplicas é denominado rs0 e tem três membros executando nas portas 27017, 27018 e 27019.

3

Dica

Use o driver PHP

Se você preferir criar um usuário de banco de dados usando o driver PHP do MongoDB em vez de mongosh, passe o comando createUser para o método MongoDB\Database::command(). Para saber mais, consulte Executar um comando de banco de dados na documentação do driver.

Crie um usuário com as permissões necessárias para o banco de dados Drupal executando as etapas a seguir.

  1. Execute o seguinte comando a partir do seu terminal para conectar ao seu conjunto de réplicas no mongosh:

    mongosh "mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=rs0"
  2. No shell mongosh, execute o seguinte comando para inserir o banco de dados admin :

    use admin
  3. Em seguida, execute o seguinte comando a partir da sua shell para criar um usuário:

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

    Substitua <database username> e <database user password> pelas suas credenciais preferidas. Salve esses valores para uso em etapas futuras.

4

A partir de uma nova janela de terminal, execute os seguintes comandos para criar um projeto Drupal denominado drupal-quickstart:

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

Em seguida, instale o módulo MongoDB executando o seguinte comando:

composer require drupal/mongodb:^3.1

Depois de instalar o Drupal, siga as etapas nesta seção para permitir que seu aplicativo funcione com o MongoDB.

1

Os arquivos PHP principais do Drupal exigem um patch para funcionar com o MongoDB. Navegue até seu diretório drupal-quickstart/web e aplique o patch executando os seguintes comandos:

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

No diretório drupal-quickstart, navegue até o subdiretório web/sites/default e execute os seguintes comandos:

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

Estes comandos copiam o arquivo de configurações padrão em um novo arquivo denominado settings.php e atualizam as permissões deste arquivo para permitir que o Drupal escreva novo conteúdo.

3

Para permitir que o Drupal modifique seus arquivos públicos, crie o diretório files e defina suas permissões executando os seguintes comandos a partir do seu diretório drupal-quickstart:

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

Em seguida, especifique a localização desses arquivos verificando se seu arquivo web/sites/default/settings.php contém o seguinte valor:

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

Dica

Se o valor anterior for comentado em settings.php, descomente-o.

Siga as etapas nesta seção para concluir a instalação do Drupal usando o assistente de configuração do Drupal.

1

No diretório drupal-quickstart, execute o seguinte comando para iniciar o servidor web PHP integrado :

php -S localhost:8080 -t web

Se bem-sucedido, este comando gera as seguintes informações:

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

Abra http://localhost:8080 em seu navegador da web para iniciar o assistente de instalação do Drupal. Em seguida, configure seu projeto selecionando as seguintes respostas.

Dica

Se o seu site exibir uma mensagem de erro sobre a conversão não canônica obsoleta de (boolean), localize a seguinte linha no arquivo DocParser.php do seu projeto:

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

Substitua esta linha pelo seguinte código:

$this->ignoreNotImportedAnnotations = (bool) $bool;
  1. Na página Escolher idioma, selecione Inglês e clique em Salvar e continuar.

  2. Na página Escolher perfil, mantenha Padrão selecionado e clique em Salvar e continuar.

  3. Na página Configurar banco de dados, selecione MongoDB como o tipo de banco de dados e forneça as seguintes informações:

    • Nome do Banco de Dados: drupal

    • Nome de usuário do banco de dados: o nome de usuário do banco de dados que você configurou com o comando createUser em uma etapa anterior

    • Senha do banco de dados: a senha do banco de dados que você configurou com o comando createUser em uma etapa anterior

    • Formato de conexão SRV: deixar desmarcado

    • Conjunto de réplicas de banco de dados: rs0

    • Hospedar #1: localhost, porta 27017

    • Hospedar #2: localhost, porta 27018

    • Hospedar #3: localhost, porta 27019

    Clique em Salvar e continuar.

  4. O Drupal instala os módulos necessários. Isso pode levar alguns minutos.

  5. Na página Configurar site, forneça as seguintes informações:

    • Nome do site: insira Drupal on MongoDB.

    • Endereço de e-mail do site: insira qualquer endereço de e-mail. Você pode usar um endereço inexistente.

    • Nome de usuário: escolha um nome de usuário de administrador.

    • Senha: escolha uma senha forte.

    • Receber notificações por e-mail: desmarque esta caixa.

    Clique em Salvar e continuar.

3

Depois de instalar o Drupal e configurar seu site, o Drupal não exige mais acesso de escrita aos seus arquivos de configurações. Para proteger estes arquivos, execute os seguintes comandos a partir do seu diretório drupal-quickstart:

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

Após concluir a instalação, siga as etapas nesta seção para criar conteúdo e armazenar seus dados no MongoDB.

1

Após a conclusão da instalação, seu site redirecionará para a página inicial do Drupal. Seu site se parece com a seguinte imagem:

Captura de tela da página inicial do Drupal após a instalação inicial

Dica

Styling do site

Se o seu site Drupal exibir HTML simples sem nenhum estilo, talvez seja necessário desativar a agregação de CSS e JavaScript . Para desativar a agregação, visite http://localhost:8080/admin/config/development/performance no seu navegador e desmarque as caixas Aggregate CSS files e Aggregate JavaScript files.

2

Clique em Content na barra de navegação na parte superior da página. Em seguida, clique em Adicionar conteúdo > Artigo.

3

Na página Create Article, execute as seguintes ações:

  1. Na seção Title, insira "Welcome to My Drupal Site".

  2. Na seção Body, insira o seguinte texto:

    This is my first article on Drupal with MongoDB!
    All content is stored as JSON documents in MongoDB.
  3. Selecione Menu settings e marque a caixa Provide a menu link.

  4. Clique em Save.

4

Depois de salvar, você pode ver seu artigo publicado. Seu site se parece com a seguinte imagem:

Captura de tela da página de artigo do Drupal
5

Dica

Use o driver PHP

Se você preferir visualizar coleções e dados de conteúdo usando o driver PHP em vez de mongosh, use os métodos MongoDB\Database::listCollections() e MongoDB\Collection::find(). Para saber mais, consulte a seguinte documentação do driver PHP:

Para verificar se seu conteúdo está para armazenar no MongoDB, execute as seguintes etapas:

  1. Abra uma nova janela do terminal e conecte ao seu conjunto de réplicas MongoDB no mongosh.

    Execute o seguinte comando a partir do seu terminal:

    mongosh "mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=rs0"
  2. Insira o banco de dados do drupal e visualize as coleções.

    Execute os seguintes comandos no seu terminal mongosh:

    use drupal
    show collections

    O Drupal cria várias coleções para armazenar diferentes tipos de conteúdo, incluindo o seguinte:

    • node: Armazena nós de conteúdo

    • users: Armazena contas de usuário

    • config: Armazena dados de configuração

  3. Visualize os dados do seu artigo.

    Para visualizar informações sobre seu artigo, execute o seguinte comando em seu 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 gera um documento JSON que contém o texto e os metadados do seu artigo.

Parabéns por concluir o tutorial Início Rápido do Drupal!

Depois de concluir essas etapas, você terá um CMS do Drupal que se conecta ao conjunto de réplicas do MongoDB local e armazena conteúdo como documentos JSON.

Para aprender mais sobre Drupal e MongoDB, consulte os seguintes recursos:

Voltar

Symfony Integration

Nesta página