Configurare strumenti Dispatcher locali set-up-local-dispatcher-tools

Il Dispatcher di Adobe Experience Manager (AEM) è un modulo server web Apache HTTP che fornisce sicurezza e prestazioni tra il livello CDN e AEM Publish. Dispatcher è parte integrante dell’architettura Experience Manager complessiva e deve far parte della configurazione di sviluppo locale.

L’SDK di AEM as a Cloud Service include la versione consigliata degli strumenti Dispatcher che facilita la configurazione della convalida e la simulazione locale di Dispatcher. Strumenti di Dispatcher è composto da:

  • un set di base di file di configurazione Dispatcher e server Web HTTP Apache, situato in .../dispatcher-sdk-x.x.x/src
  • uno strumento CLI di convalida della configurazione, disponibile in .../dispatcher-sdk-x.x.x/bin/validate
  • uno strumento CLI di generazione della configurazione, disponibile in .../dispatcher-sdk-x.x.x/bin/validator
  • uno strumento CLI di distribuzione della configurazione, disponibile in .../dispatcher-sdk-x.x.x/bin/docker_run
  • file di configurazione immutabile che sovrascrivono lo strumento CLI, disponibile in .../dispatcher-sdk-x.x.x/bin/update_maven
  • un’immagine Docker che esegue il server web Apache HTTP con il modulo Dispatcher

~ viene utilizzato come abbreviazione per la directory dell'utente. In Windows equivale a %HOMEPATH%.

NOTE
I video in questa pagina sono stati registrati su macOS. Gli utenti di Windows possono seguire le istruzioni, ma utilizzare i comandi equivalenti di Dispatcher Tools per Windows, forniti con ogni video.

Prerequisiti

  1. Gli utenti di Windows devono utilizzare Windows 10 Professional (o una versione che supporta Docker)
  2. Installa Experience Manager Publish Quickstart Jar nel computer di sviluppo locale.
  • È possibile installare il sito Web di riferimento AEM più recente nel servizio Publish AEM locale. Questo sito Web viene utilizzato in questo tutorial per visualizzare un Dispatcher funzionante.
  1. Installare e avviare la versione più recente di Docker (Docker Desktop 2.2.0.5+ / Docker Engine v19.03.9+) nel computer di sviluppo locale.

Scaricare gli strumenti Dispatcher (come parte dell’SDK dell’AEM)

L’SDK per AEM as a Cloud Service, o SDK per AEM, contiene gli strumenti Dispatcher utilizzati per eseguire il server web Apache HTTP con il modulo Dispatcher a livello locale per lo sviluppo e il Jar QuickStart compatibile.

Se l'SDK di AEM as a Cloud Service è già stato scaricato in configurare il runtime AEM locale, non è necessario scaricarlo di nuovo.

  1. Accedi a [experience.adobe.com/#/downloads](https://experience.adobe.com/#/downloads/content/software-distribution/en/aemcloud.html?fulltext=AEM*+SDK*&1_group.propertyvalues.property=.%2Fjcr%3Acontent%2Fmetadata%2Fdc%3AsoftwareType&1_group.propertyvalues.operation=equals&1_group.propertyvalues.0_values=tipo di software%3Atooling&orderby=%40jcr%3Acontent%2Fjcr%3AlastModified&orderby.sort=desc&layout=list&p.offset=0&p.limit=1) con il tuo Adobe ID
    • È necessario eseguire il provisioning della tua organizzazione Adobe 1} affinché AEM as a Cloud Service possa scaricare l'SDK di AEM as a Cloud Service
  2. Fai clic sulla riga dei risultati AEM SDK più recente per scaricarla

Estrarre gli strumenti Dispatcher dallo zip dell’SDK AEM

TIP
Gli utenti di Windows non possono disporre di spazi o caratteri speciali nel percorso della cartella contenente gli strumenti di Dispatcher locali. Se nel percorso sono presenti spazi, docker_run.cmd non produrrà alcun risultato.

La versione degli strumenti di Dispatcher è diversa da quella dell’SDK dell’AEM. Assicurati che la versione degli Strumenti di Dispatcher sia fornita tramite la versione dell’SDK AEM corrispondente alla versione di AEM as a Cloud Service.

  1. Decomprimi il file aem-sdk-xxx.zip scaricato
  2. Decomprimi gli strumenti di Dispatcher in ~/aem-sdk/dispatcher
macOS
code language-shell
$ chmod a+x aem-sdk-dispatcher-tools-x.x.x-unix.sh
$ ./aem-sdk-dispatcher-tools-x.x.x-unix.sh
Windows
Decomprimi aem-sdk-dispatcher-tools-x.x.x-windows.zip in C:\Users\<My User>\aem-sdk\dispatcher (creando le cartelle mancanti in base alle esigenze).
Linux®
code language-shell
$ chmod a+x aem-sdk-dispatcher-tools-x.x.x-unix.sh
$ ./aem-sdk-dispatcher-tools-x.x.x-unix.sh

Tutti i comandi emessi di seguito presuppongono che la directory di lavoro corrente contenga il contenuto degli strumenti di Dispatcher in espansione.

Questo video utilizza macOS a scopo illustrativo. È possibile utilizzare i comandi Windows/Linux equivalenti per ottenere risultati simili.

Comprendere i file di configurazione di Dispatcher

TIP
I progetti di Experience Manager creati dall'Archetipo Maven progetto AEM sono precompilati in questo set di file di configurazione Dispatcher, pertanto non è necessario copiarli dalla cartella Dispatcher Tools Src.

Gli strumenti di Dispatcher forniscono un set di file di configurazione del server web Apache HTTP e di Dispatcher che definiscono il comportamento per tutti gli ambienti, incluso lo sviluppo locale.

Questi file devono essere copiati in un progetto Maven di Experience Manager nella cartella dispatcher/src, se non esistono nel progetto Maven di Experience Manager.

Una descrizione completa dei file di configurazione è disponibile in Strumenti di Dispatcher decompressi come dispatcher-sdk-x.x.x/docs/Config.html.

Convalida configurazioni

Facoltativamente, le configurazioni del server Web Dispatcher e Apache (tramite httpd -t) possono essere convalidate utilizzando lo script validate (da non confondere con l'eseguibile validator). Lo script validate consente di eseguire in modo pratico le tre fasi di validator.

macOS
code language-shell
$ ./bin/validate.sh ./src
Windows
code language-shell
$ bin\validate src
Linux®
code language-shell
$ ./bin/validate.sh ./src

Eseguire Dispatcher localmente

Il Dispatcher AEM viene eseguito localmente utilizzando Docker nei file di configurazione del server Web Dispatcher e Apache src.

macOS
code language-shell
$ ./bin/docker_run_hot_reload.sh <src-folder> <aem-publish-host>:<aem-publish-port> <dispatcher-port>

L'eseguibile docker_run_hot_reload è preferito a docker_run in quanto ricarica i file di configurazione man mano che vengono modificati, senza dover terminare e riavviare manualmente docker_run. In alternativa, è possibile utilizzare docker_run, ma richiede la chiusura e il riavvio manuale di docker_run quando i file di configurazione vengono modificati.

Windows
code language-shell
$ bin\docker_run <src-folder> <aem-publish-host>:<aem-publish-port> <dispatcher-port>
Linux®
code language-shell
$ ./bin/docker_run_hot_reload.sh <src-folder> <aem-publish-host>:<aem-publish-port> <dispatcher-port>

L'eseguibile docker_run_hot_reload è preferito a docker_run in quanto ricarica i file di configurazione man mano che vengono modificati, senza dover terminare e riavviare manualmente docker_run. In alternativa, è possibile utilizzare docker_run, ma richiede la chiusura e il riavvio manuale di docker_run quando i file di configurazione vengono modificati.

È possibile impostare <aem-publish-host> su host.docker.internal, un nome DNS speciale fornito da Docker nel contenitore che viene risolto nell'IP del computer host. Se host.docker.internal non si risolve, vedere la sezione risoluzione dei problemi di seguito.

Ad esempio, per avviare il contenitore Docker di Dispatcher utilizzando i file di configurazione predefiniti forniti dagli strumenti di Dispatcher:

Avvia il contenitore Docker di Dispatcher che fornisce il percorso della cartella src di configurazione Dispatcher:

macOS
code language-shell
$ ./bin/docker_run_hot_reload.sh ./src host.docker.internal:4503 8080
Windows
code language-shell
$ bin\docker_run src host.docker.internal:4503 8080
Linux®
code language-shell
$ ./bin/docker_run_hot_reload.sh ./src host.docker.internal:4503 8080

Il servizio Publish dell'SDK AEM as a Cloud Service, in esecuzione localmente sulla porta 4503, è disponibile tramite Dispatcher all'indirizzo http://localhost:8080.

Per eseguire gli strumenti di Dispatcher in base alla configurazione Dispatcher di un progetto Experience Manager, posizionare il puntatore del mouse sulla cartella dispatcher/src del progetto.

macOS
code language-shell
$ ./bin/docker_run_hot_reload.sh ~/code/my-project/dispatcher/src host.docker.internal:4503 8080
Windows
code language-shell
$ bin\docker_run <User Directory>/code/my-project/dispatcher/src host.docker.internal:4503 8080
Linux®
code language-shell
$ ./bin/docker_run_hot_reload.sh ~/code/my-project/dispatcher/src host.docker.internal:4503 8080

Registri strumenti Dispatcher

I registri di Dispatcher sono utili durante lo sviluppo locale per capire se e perché le richieste HTTP sono bloccate. È possibile impostare il livello di registro prefissando l'esecuzione di docker_run con i parametri dell'ambiente.

I registri degli strumenti di Dispatcher vengono emessi in uscita standard quando viene eseguito docker_run.

I parametri utili per il debug di Dispatcher includono:

  • DISP_LOG_LEVEL=Debug imposta la registrazione del modulo Dispatcher al livello di debug
    • Valore predefinito: Warn
  • REWRITE_LOG_LEVEL=Debug imposta la registrazione del modulo di riscrittura del server Web HTTP Apache sul livello Debug
    • Valore predefinito: Warn
  • DISP_RUN_MODE imposta la "modalità di esecuzione" dell'ambiente Dispatcher, caricando i file di configurazione Dispatcher delle modalità di esecuzione corrispondenti.
    • Impostazione predefinita: dev
  • Valori validi: dev, stage o prod

Uno o più parametri possono essere passati a docker_run

macOS
code language-shell
$ DISP_LOG_LEVEL=Debug REWRITE_LOG_LEVEL=Debug ./bin/docker_run_hot_reload.sh ~/code/my-project/dispatcher/src host.docker.internal:4503 8080
Windows
code language-shell
$ DISP_LOG_LEVEL=Debug REWRITE_LOG_LEVEL=Debug bin\docker_run <User Directory>/code/my-project/dispatcher/src host.docker.internal:4503 8080
Linux®
code language-shell
$ DISP_LOG_LEVEL=Debug REWRITE_LOG_LEVEL=Debug ./bin/docker_run_hot_reload.sh ~/code/my-project/dispatcher/src host.docker.internal:4503 8080

Accesso al file di registro

È possibile accedere direttamente ai registri del server web Apache e del Dispatcher AEM nel contenitore Docker:

Quando aggiornare gli strumenti Dispatcher dispatcher-tools-version

Le versioni di Dispatcher Tools aumentano meno frequentemente rispetto all’Experience Manager, pertanto Dispatcher Tools richiede meno aggiornamenti nell’ambiente di sviluppo locale.

La versione consigliata degli strumenti di Dispatcher è quella fornita in bundle con l'SDK di AEM as a Cloud Service che corrisponde alla versione as a Cloud Service dell'Experience Manager. La versione di AEM as a Cloud Service è disponibile tramite Cloud Manager.

  • Cloud Manager > Ambienti, per ambiente specificato dall'etichetta Versione AEM

Versione Experience Manager

La versione degli strumenti di Dispatcher non corrisponde alla versione dell'Experience Manager.

Come aggiornare il set di base di configurazioni di Apache e Dispatcher

Il set di base della configurazione di Apache e Dispatcher viene regolarmente migliorato e rilasciato con la versione SDK di AEM as a Cloud Service. È consigliabile incorporare i miglioramenti alla configurazione di base nel progetto AEM ed evitare la convalida locale e gli errori della pipeline Cloud Manager. Aggiornarli utilizzando lo script update_maven.sh della cartella .../dispatcher-sdk-x.x.x/bin.

Questo video utilizza macOS a scopo illustrativo. È possibile utilizzare i comandi Windows/Linux equivalenti per ottenere risultati simili.

Supponiamo che tu abbia creato un progetto AEM in passato utilizzando Archetipo progetto AEM; le configurazioni di base di Apache e Dispatcher erano correnti. Utilizzando queste configurazioni di base, le configurazioni specifiche del progetto sono state create riutilizzando e copiando file come *.vhost, *.conf, *.farm e *.any dalle cartelle dispatcher/src/conf.d e dispatcher/src/conf.dispatcher.d. La convalida Dispatcher locale e le pipeline Cloud Manager funzionavano correttamente.

Nel frattempo, le configurazioni di base di Apache e Dispatcher sono state migliorate per vari motivi, come nuove funzioni, correzioni di sicurezza e ottimizzazione. Vengono rilasciati tramite una versione più recente di Dispatcher Tools come parte del rilascio di AEM as a Cloud Service.

Ora, quando si convalidano le configurazioni di Dispatcher specifiche per il progetto rispetto alla versione più recente degli strumenti Dispatcher, si verifica un errore. Per risolvere questo problema, è necessario aggiornare le configurazioni della linea di base utilizzando i passaggi seguenti:

  • Verifica che la convalida non riesca rispetto alla versione più recente di Dispatcher Tools

    code language-shell
    $ ./bin/validate.sh ${YOUR-AEM-PROJECT}/dispatcher/src
    
    ...
    Phase 3: Immutability check
    empty mode param, assuming mode = 'check'
    ...
    ** error: immutable file 'conf.d/available_vhosts/default.vhost' has been changed!
    
  • Aggiornare i file immutabili utilizzando lo script update_maven.sh

    code language-shell
    $ ./bin/update_maven.sh ${YOUR-AEM-PROJECT}/dispatcher/src
    
    ...
    Updating dispatcher configuration at folder
    running in 'extract' mode
    running in 'extract' mode
    reading immutable file list from /etc/httpd/immutable.files.txt
    preparing 'conf.d/available_vhosts/default.vhost' immutable file extraction
    ...
    immutable files extraction COMPLETE
    fd72f4521fa838daaaf006bb8c9c96ed33a142a2d63cc963ba4cc3dd228948fe
    Cloud manager validator 2.0.53
    
  • Verificare i file immutabili aggiornati come dispatcher_vhost.conf, default.vhost e default.farm e, se necessario, apportare modifiche rilevanti ai file personalizzati derivati da tali file.

  • Convalida la configurazione, deve passare

$ ./bin/validate.sh ${YOUR-AEM-PROJECT}/dispatcher/src

...
checking 'conf.dispatcher.d/renders/default_renders.any' immutability (if present)
checking existing 'conf.dispatcher.d/renders/default_renders.any' for changes
checking 'conf.dispatcher.d/virtualhosts/default_virtualhosts.any' immutability (if present)
checking existing 'conf.dispatcher.d/virtualhosts/default_virtualhosts.any' for changes
no immutable file has been changed - check is SUCCESSFUL
Phase 3 finished
  • Dopo la verifica locale delle modifiche, esegui il commit dei file di configurazione aggiornati

Risoluzione dei problemi

docker_run restituisce il messaggio 'In attesa della disponibilità di host.docker.internal' troubleshooting-host-docker-internal

host.docker.internal è un nome host fornito al Docker che viene risolto nell'host. Secondo docs.docker.com (macOS, Windows):

A partire da Docker 18.03 si consiglia di connettersi al nome DNS speciale host.docker.internal, che viene risolto nell'indirizzo IP interno utilizzato dall'host

Quando bin/docker_run src host.docker.internal:4503 8080 restituisce il messaggio In attesa che host.docker.internal sia disponibile, allora:

  1. Verificare che la versione installata di Docker sia 18.03 o successiva
  2. È possibile che sia stato configurato un computer locale che impedisce la registrazione/risoluzione del nome host.docker.internal. Utilizza piuttosto l’IP locale.
macOS
  • Da Terminal, eseguire ifconfig e registrare l'indirizzo IP inet dell'host, in genere il dispositivo en0.

  • Quindi eseguire docker_run utilizzando l'indirizzo IP host: $ bin/docker_run_hot_reload.sh src <HOST IP>:4503 8080

Windows
  • Dal prompt dei comandi, eseguire ipconfig e registrare l'indirizzo IPv4 dell'host nel computer host.

  • Quindi, eseguire docker_run utilizzando questo indirizzo IP: $ bin\docker_run src <HOST IP>:4503 8080

Linux®
  • Da Terminal, eseguire ifconfig e registrare l'indirizzo IP inet dell'host, in genere il dispositivo en0.

  • Quindi eseguire docker_run utilizzando l'indirizzo IP host: $ bin/docker_run_hot_reload.sh src <HOST IP>:4503 8080

Errore di esempio

$ docker_run src host.docker.internal:4503 8080

Running script /docker_entrypoint.d/10-check-environment.sh
Running script /docker_entrypoint.d/20-create-docroots.sh
Running script /docker_entrypoint.d/30-wait-for-backend.sh
Waiting until host.docker.internal is available

Risorse aggiuntive

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69