Dispatcher d’Adobe Experience Manager (AEM) est un module de serveur web Apache HTTP qui fournit une couche de sécurité et de performances entre le réseau de diffusion de contenu et le niveau Publication AEM. Dispatcher fait partie intégrante de l’architecture globale du Experience Manager et doit faire partie de la configuration du développement local.
Le SDK AEM as a Cloud Service comprend la version recommandée des outils Dispatcher, qui facilite la configuration, la validation et la simulation locale de Dispatcher. Les outils de Dispatcher se composent des éléments suivants :
.../dispatcher-sdk-x.x.x/src
.../dispatcher-sdk-x.x.x/bin/validate
.../dispatcher-sdk-x.x.x/bin/validator
.../dispatcher-sdk-x.x.x/bin/docker_run
Notez que ~
est utilisé comme abrégé pour le répertoire de l’utilisateur. Sous Windows, il s’agit de l’équivalent de %HOMEPATH%
.
Les vidéos de cette page ont été enregistrées sur macOS. Les utilisateurs de Windows peuvent suivre, mais utiliser les commandes Windows équivalentes des outils Dispatcher, fournies avec chaque vidéo.
Le SDK AEM as a Cloud Service, ou SDK AEM, contient les outils Dispatcher utilisés pour exécuter le serveur web Apache HTTP avec le module Dispatcher localement pour le développement, ainsi que le fichier Jar QuickStart compatible.
Si le SDK AEM as a Cloud Service a déjà été téléchargé vers configuration du runtime AEM local, il n’est pas nécessaire de le retélécharger.
Les utilisateurs de Windows ne peuvent pas avoir d’espaces ni de caractères spéciaux dans le chemin d’accès au dossier contenant les outils du Dispatcher local. S’il existe des espaces dans le chemin, la balise docker_run.cmd
échoue.
La version des outils de Dispatcher est différente de celle du SDK AEM. Assurez-vous que la version des outils de Dispatcher est fournie via la version AEM SDK correspondant à l’AEM en tant que version de Cloud Service.
aem-sdk-xxx.zip
téléchargé.~/aem-sdk/dispatcher
aem-sdk-dispatcher-tools-x.x.x-windows.zip
dans C:\Users\<My User>\aem-sdk\dispatcher
(créez les dossiers manquants selon les besoins).aem-sdk-dispatcher-tools-x.x.x-unix.sh
pour décompresser les outils de Dispatcher.
chmod a+x aem-sdk-dispatcher-tools-x.x.x-unix.sh && ./aem-sdk-dispatcher-tools-x.x.x-unix.sh
Notez que toutes les commandes émises ci-dessous supposent que le répertoire de travail actuel contient le contenu des outils Dispatcher en extension.
Cette vidéo utilise macOS à des fins d’illustration. Les commandes Windows/Linux équivalentes peuvent être utilisées pour obtenir des résultats similaires
Les projets de Experience Manager créés à partir de l’archétype Maven de projet AEM sont prérenseignés à cet ensemble de fichiers de configuration de Dispatcher. Il n’est donc pas nécessaire de les copier depuis le dossier src des outils de Dispatcher.
Les outils de Dispatcher fournissent un ensemble de fichiers de configuration du serveur web Apache HTTP et de Dispatcher qui définissent le comportement de tous les environnements, y compris le développement local.
Ces fichiers sont destinés à être copiés dans un projet Maven Experience Manager vers le dossier dispatcher/src
, s’ils n’existent pas déjà dans le projet Maven Experience Manager.
Une description complète des fichiers de configuration est disponible dans les outils Dispatcher décompressés sous la forme dispatcher-sdk-x.x.x/docs/Config.html
.
En option, les configurations du serveur web Dispatcher et Apache (via httpd -t
) peuvent être validées à l’aide du script validate
(à ne pas confondre avec le fichier exécutable validator
). Le script validate
permet d’exécuter facilement les 3 phases de validator
.
bin\validate src
./bin/validate.sh ./src
AEM Dispatcher est exécuté en local à l’aide de Docker par rapport aux fichiers de configuration du serveur Web Dispatcher et Apache.src
bin\docker_run <src-folder> <aem-publish-host>:<aem-publish-port> <dispatcher-port>
./bin/docker_run.sh <src-folder> <aem-publish-host>:<aem-publish-port> <dispatcher-port>
<aem-publish-host>
peut être défini sur host.docker.internal
, un nom DNS spécial que Docker fournit dans le conteneur qui résout l’adresse IP de l’ordinateur hôte. Si la host.docker.internal
ne se résout pas, reportez-vous à la section Dépannage ci-dessous.
Par exemple, pour démarrer le conteneur Docker de Dispatcher à l’aide des fichiers de configuration par défaut fournis par les outils Dispatcher :
Démarrez le conteneur Docker de Dispatcher en indiquant le chemin d’accès au dossier src de configuration de Dispatcher :
bin\docker_run src host.docker.internal:4503 8080
./bin/docker_run.sh ./src host.docker.internal:4503 8080
Le service de publication de l’AEM as a Cloud Service SDK s’exécutant localement sur le port 4503 sera disponible via Dispatcher à l’adresse http://localhost:8080
.
Pour exécuter les outils Dispatcher par rapport à la configuration Dispatcher d’un projet de Experience Manager, pointez sur le dossier dispatcher/src
de votre projet.
Windows :
$ bin\docker_run <User Directory>/code/my-project/dispatcher/src host.docker.internal:4503 8080
macOS / Linux :
$ ./bin/docker_run.sh ~/code/my-project/dispatcher/src host.docker.internal:4503 8080
Les journaux de Dispatcher sont utiles lors du développement local pour comprendre si et pourquoi les requêtes HTTP sont bloquées. Le niveau de journal peut être défini en ajoutant un préfixe à l’exécution de docker_run
avec les paramètres d’environnement.
Les journaux des outils de Dispatcher sont émis en sortie standard lorsque docker_run
est exécuté.
Les paramètres utiles pour le débogage de Dispatcher incluent :
DISP_LOG_LEVEL=Debug
définit la journalisation du module Dispatcher sur le niveau de débogage.
Warn
REWRITE_LOG_LEVEL=Debug
définit la journalisation du module de réécriture du serveur web Apache HTTP au niveau de débogage.
Warn
DISP_RUN_MODE
définit le "mode d’exécution" de l’environnement de Dispatcher, en chargeant les fichiers de configuration de Dispatcher des modes d’exécution correspondants.
dev
dev
, stage
ou prod
Un ou plusieurs paramètres peuvent être transmis à docker_run
Windows :
$ DISP_LOG_LEVEL=Debug REWRITE_LOG_LEVEL=Debug bin\docker_run <User Directory>/code/my-project/dispatcher/src host.docker.internal:4503 8080
macOS / Linux :
$ DISP_LOG_LEVEL=Debug REWRITE_LOG_LEVEL=Debug ./bin/docker_run.sh ~/code/my-project/dispatcher/src host.docker.internal:4503 8080
Le serveur web Apache et les journaux AEM Dispatcher sont directement accessibles dans le conteneur Docker :
Les versions des outils de Dispatcher s’incrémentent moins fréquemment que le Experience Manager. Par conséquent, les outils de Dispatcher nécessitent moins de mises à jour dans l’environnement de développement local.
La version recommandée des outils de Dispatcher est celle qui est fournie avec l’AEM en tant que SDK de Cloud Service correspondant au Experience Manager en tant que version de Cloud Service. Vous trouverez la version d’AEM en tant que Cloud Service via Cloud Manager.
Notez que la version des outils de Dispatcher elle-même ne correspond pas à la version du Experience Manager.
host.docker.internal
est un nom d’hôte fourni au contenu Docker qui résout l’hôte. Per docs.docker.com (macOS, Windows) :
À partir de la version 18.03 de Docker, nous vous recommandons de vous connecter au nom DNS spécial host.docker.internal, qui correspond à l’adresse IP interne utilisée par l’hôte.
Si, lorsque bin/docker_run src host.docker.internal:4503 8080
renvoie le message En attendant que host.docker.internal soit disponible, alors :
host.docker.internal
. Utilisez plutôt votre adresse IP locale.
Dans l’invite de commande, exécutez ipconfig
et enregistrez l’adresse IPv4 de l’ordinateur hôte.
Exécutez ensuite docker_run
à l’aide de cette adresse IP :
bin\docker_run src <HOST IP>:4503 8080
Depuis le terminal, exécutez ifconfig
et enregistrez l’adresse IP de l’hôte inet, généralement le périphérique en0.
Exécutez ensuite docker_run
à l’aide de l’adresse IP de l’hôte :
bin/docker_run.sh src <HOST IP>:4503 8080
$ 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
L’exécution de docker_run
sous Windows peut entraîner l’erreur suivante, ce qui empêche Dispatcher de démarrer. Il s’agit d’un problème signalé avec Dispatcher sous Windows qui sera corrigé dans une version ultérieure.
$ \Users\MyUser\aem-sdk\dispatcher>bin\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
host.docker.internal resolves to 192.168.65.2
Running script /docker_entrypoint.d/40-generate-allowed-clients.sh
Running script /docker_entrypoint.d/50-check-expiration.sh
Running script /docker_entrypoint.d/60-check-loglevel.sh
Running script /docker_entrypoint.d/70-check-forwarded-host-secret.sh
Starting httpd server
[Sun Feb 09 17:32:22.256020 2020] [dispatcher:warn] [pid 1:tid 140080096570248] Unable to obtain parent directory of /etc/httpd/conf.dispatcher.d/enabled_farms/farms.any: No such file or directory
[Sun Feb 09 17:32:22.256069 2020] [dispatcher:alert] [pid 1:tid 140080096570248] Unable to import config file: /etc/httpd/conf.dispatcher.d/dispatcher.any
[Sun Feb 09 17:32:22.256074 2020] [dispatcher:alert] [pid 1:tid 140080096570248] Dispatcher initialization failed.
AH00016: Configuration Failed