Instalações multisite.

Aprender DXPR BuilderGerir o siteOperar em produção

O DXPR Builder corre numa instalação multisite do Drupal tal como corre em servidores separados: uma cópia do código do módulo, uma base de dados por site, e uma chave de produto que todos os sites partilham. Esta página abrange o que é partilhado, o que é por site, e como o configurar.

Licenciamento entre sites

Uma chave de produto serve todos os sites. O licenciamento é por editor, não por site, e a contagem é mantida pelo servidor de licenças da DXPR:

  • Cada site envia o nome de anfitrião e os editores (as contas com a permissão edit with dxpr builder não excluídas, mais o utilizador 1) para o servidor de licenças (src/Service/DxprBuilderLicenseService.php). Contas sem um endereço eletrónico válido não são enviadas.
  • O servidor guarda um registo por endereço eletrónico com a lista de domínios onde esse endereço editou. Uma pessoa que edita em três sites com o mesmo endereço eletrónico conta uma vez.
  • Cada site obtém a lista partilhada de editores do servidor e indica o total no relatório de estado e na página User Licenses. A lista fica em cache durante 24 horas.

Leia Licenciamento multisite para saber como os editores se contam e libertam.

O que é partilhado e o que é por site

Partilhado através da base de código:

  • O módulo e os submódulos em modules/contrib/dxpr_builder.
  • O JavaScript do editor. Com Asset source definido como Cloud, a predefinição, cada site carrega o mesmo lançamento da CDN da DXPR. Quando o diretório do módulo tem uma compilação local, cada site carrega antes os ficheiros de lá.
  • Conjuntos de ícones e classes utilitárias declarados por módulos e temas (*.dxpr_icon_sets.yml, dxpr_builder_classes no .info.yml de um tema). As classes de um tema aparecem apenas nos sites onde esse tema está ativo.

Por site, porque vive na base de dados e na configuração desse site:

  • dxpr_builder.settings: a chave de produto ou a entidade Key que a guarda, Custom styles, Sideload Bootstrap files, Browser type para multimédia, as definições de filtro de texto e de recursos do editor.
  • A própria entidade Key (key.key.*), quando a chave de produto está guardada com o módulo Key.
  • Definições de IA (DXPR Studio > DXPR Builder > AI), incluindo que modelos estão ativos.
  • Perfis do construtor (dxpr_builder.dxpr_builder_profile.*), modelos de página (dxpr_builder.page_template.*) e modelos de utilizador (dxpr_builder.user_template.*).
  • Imagens carregadas no diretório de ficheiros de cada site (dxpr_builder_images, dxpr_builder_videos, dxpr_builder_files).

A definição de Bootstrap tem dois valores, None (theme provides Bootstrap) e Bootstrap 5. Escolha por site segundo o tema que o site usa.

Configurar um site novo no multisite

  1. Crie o sites/<name>/settings.php do site e a base de dados como para qualquer site multisite do Drupal.

  2. Ative o módulo nesse site:

    drush --uri=https://<site-host> en dxpr_builder -y
    
  3. Aceda a DXPR Studio > DXPR Builder > General Settings (/admin/dxpr_studio/dxpr_builder/settings) nesse site. Na secção License, cole a mesma chave de produto usada nos outros sites, ou selecione uma Key neste site que a guarda.

  4. Defina Sideload Bootstrap files segundo o tema do site.

  5. Crie os perfis do construtor do site e, se preciso, importe modelos como descrito abaixo.

Partilhar modelos entre sites

Os modelos de página e de utilizador são entidades de configuração, por isso pode movê-los com exportação e importação de configuração:

  1. Exporte a configuração do site de origem:

    drush --uri=https://<source-host> config:export
    
  2. Copie os ficheiros dxpr_builder.page_template.*.yml e dxpr_builder.user_template.*.yml para o diretório de sincronização de configuração do site de destino.

  3. Importe-os no site de destino:

    drush --uri=https://<target-host> config:import --partial
    

Os modelos de utilizador trazem um uid; o ficheiro exportado refere o ID de utilizador do dono no site de origem, por isso verifique o dono após a importação.

O que se segue?