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%
.
Prerequisiti
- Gli utenti di Windows devono utilizzare Windows 10 Professional (o una versione che supporta Docker)
- 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.
- 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.
- 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
- Fai clic sulla riga dei risultati AEM SDK più recente per scaricarla
Estrarre gli strumenti Dispatcher dallo zip dell’SDK AEM
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.
- Decomprimi il file
aem-sdk-xxx.zip
scaricato - Decomprimi gli strumenti di Dispatcher in
~/aem-sdk/dispatcher
code language-shell |
---|
|
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).code language-shell |
---|
|
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
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
.
code language-shell |
---|
|
code language-shell |
---|
|
code language-shell |
---|
|
Eseguire Dispatcher localmente
Il Dispatcher AEM viene eseguito localmente utilizzando Docker nei file di configurazione del server Web Dispatcher e Apache src
.
code language-shell |
---|
|
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.
code language-shell |
---|
|
code language-shell |
---|
|
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:
code language-shell |
---|
|
code language-shell |
---|
|
code language-shell |
---|
|
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.
code language-shell |
---|
|
code language-shell |
---|
|
code language-shell |
---|
|
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
- Valore predefinito:
REWRITE_LOG_LEVEL=Debug
imposta la registrazione del modulo di riscrittura del server Web HTTP Apache sul livello Debug- Valore predefinito:
Warn
- Valore predefinito:
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
- Impostazione predefinita:
- Valori validi:
dev
,stage
oprod
Uno o più parametri possono essere passati a docker_run
code language-shell |
---|
|
code language-shell |
---|
|
code language-shell |
---|
|
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
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
edefault.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:
- Verificare che la versione installata di Docker sia 18.03 o successiva
- È possibile che sia stato configurato un computer locale che impedisce la registrazione/risoluzione del nome
host.docker.internal
. Utilizza piuttosto l’IP locale.
-
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
-
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
-
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