Configurar las herramientas locales de Dispatcher set-up-local-dispatcher-tools

Dispatcher AEM de Adobe Experience Manager AEM () es un módulo de servidor web HTTP Apache que proporciona una capa de seguridad y rendimiento entre el nivel de CDN y Publish de la. Dispatcher es una parte integral de la arquitectura de Experience Manager general y debe formar parte de la configuración de desarrollo local.

El SDK de AEM as a Cloud Service incluye la versión de herramientas de Dispatcher recomendada que facilita la configuración, validación y simulación de Dispatcher localmente. Las herramientas de Dispatcher están compuestas por:

  • un conjunto de línea de base de archivos de configuración de Dispatcher y servidor web HTTP Apache, ubicado en .../dispatcher-sdk-x.x.x/src
  • una herramienta CLI de validación de configuración, ubicada en .../dispatcher-sdk-x.x.x/bin/validate
  • una herramienta CLI de generación de configuración, ubicada en .../dispatcher-sdk-x.x.x/bin/validator
  • una herramienta CLI de implementación de configuración, ubicada en .../dispatcher-sdk-x.x.x/bin/docker_run
  • un archivo de configuración inmutable que sobrescribe la herramienta CLI, ubicada en .../dispatcher-sdk-x.x.x/bin/update_maven
  • una imagen Docker que ejecuta el servidor web HTTP Apache con el módulo Dispatcher

Tenga en cuenta que ~ se usa como abreviatura del directorio del usuario. En Windows, es el equivalente de %HOMEPATH%.

NOTE
Los vídeos de esta página se han grabado en macOS. Los usuarios de Windows pueden seguirlo, pero utilizan los comandos equivalentes de Windows de las Herramientas de Dispatcher que se proporcionan con cada vídeo.

Requisitos previos

  1. Los usuarios de Windows deben utilizar Windows 10 Professional (o una versión compatible con Docker)
  2. Instale Experience Manager Publish Quickstart Jar en el equipo de desarrollo local.
  • AEM AEM Si lo desea, instale el sitio web de referencia más reciente en el servicio local de de Publish. Este sitio web se utiliza en este tutorial para visualizar una Dispatcher en funcionamiento.
  1. Instale e inicie la última versión de Docker (Docker Desktop 2.2.0.5+ / Docker Engine v19.03.9+) en el equipo de desarrollo local.

Descargar las herramientas de Dispatcher AEM (como parte del SDK de la)

El SDK de AEM as a Cloud Service AEM, o SDK de, contiene las herramientas de Dispatcher utilizadas para ejecutar el servidor web HTTP de Apache con el módulo de Dispatcher localmente para desarrollo y el Jar de inicio rápido compatible.

Si el SDK de AEM as a Cloud Service AEM ya se ha descargado para configurar el tiempo de ejecución de la local, no es necesario volver a descargarlo.

  1. Inicie sesión en experience.adobe.com/#/downloads con su Adobe ID
    • Su organización de Adobe debe estar aprovisionada para que AEM as a Cloud Service descargue el SDK de AEM as a Cloud Service
  2. AEM Haga clic en la fila de resultados del SDK más reciente para descargar.

Extraiga las herramientas de Dispatcher AEM del zip del SDK de la

TIP
Los usuarios de Windows no pueden tener espacios ni caracteres especiales en la ruta de acceso a la carpeta que contiene las herramientas locales de Dispatcher. Si existen espacios en la ruta de acceso, docker_run.cmd produce un error.

La versión de las herramientas de Dispatcher AEM es diferente de la del SDK de la. Asegúrese de que la versión de las herramientas de Dispatcher AEM se proporciona a través de la versión del SDK de la que coincide con la versión de AEM as a Cloud Service.

  1. Descomprima el archivo aem-sdk-xxx.zip descargado
  2. Desempaquetar las herramientas de Dispatcher en ~/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
Descomprima aem-sdk-dispatcher-tools-x.x.x-windows.zip en C:\Users\<My User>\aem-sdk\dispatcher (creando las carpetas que faltan según sea necesario).
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

Todos los comandos que se emiten a continuación suponen que el directorio de trabajo actual contiene el contenido de herramientas de Dispatcher en expansión.

Este vídeo utiliza macOS con fines ilustrativos. Los comandos equivalentes de Windows/Linux se pueden usar para obtener resultados similares.

Comprender los archivos de configuración de Dispatcher

TIP
Los proyectos de Experience Manager AEM creados a partir del Proyecto Maven Archetype de ya se han rellenado en este conjunto de archivos de configuración de Dispatcher, por lo que no es necesario realizar ninguna copia desde la carpeta src de Dispatcher Tools.

Las herramientas de Dispatcher proporcionan un conjunto de archivos de configuración de Dispatcher y del servidor web HTTP Apache que definen el comportamiento de todos los entornos, incluido el desarrollo local.

Estos archivos están pensados para copiarse en un proyecto de Maven de Experience Manager en la carpeta dispatcher/src, si no existen en el proyecto de Maven de Experience Manager.

Hay disponible una descripción completa de los archivos de configuración en las herramientas de Dispatcher desempaquetadas como dispatcher-sdk-x.x.x/docs/Config.html.

Validar configuraciones

Opcionalmente, las configuraciones del servidor web Dispatcher y Apache (a través de httpd -t) se pueden validar utilizando el script validate (no confundirlo con el ejecutable validator). El script validate proporciona una forma cómoda de ejecutar las tres fases de validator.

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

Ejecutar Dispatcher localmente

AEM Dispatcher se ejecuta localmente mediante Docker con los archivos de configuración de src Dispatcher y del servidor web Apache.

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

El ejecutable docker_run_hot_reload es preferible sobre docker_run, ya que vuelve a cargar los archivos de configuración a medida que se modifican, sin tener que terminar manualmente ni reiniciar docker_run. Como alternativa, docker_run se puede usar, pero requiere finalizar y reiniciar manualmente docker_run cuando se cambien los archivos de configuración.

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>

El ejecutable docker_run_hot_reload es preferible sobre docker_run, ya que vuelve a cargar los archivos de configuración a medida que se modifican, sin tener que terminar manualmente ni reiniciar docker_run. Como alternativa, docker_run se puede usar, pero requiere finalizar y reiniciar manualmente docker_run cuando se cambien los archivos de configuración.

El <aem-publish-host> se puede establecer en host.docker.internal, un nombre DNS especial que Docker proporciona en el contenedor que se resuelve en la dirección IP del equipo host. Si host.docker.internal no se resuelve, consulte la sección solución de problemas a continuación.

Por ejemplo, para iniciar el contenedor de Dispatcher Docker utilizando los archivos de configuración predeterminados proporcionados por las herramientas de Dispatcher:

Inicie el contenedor de Dispatcher Docker que proporciona la ruta a la carpeta src de configuración de 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

El servicio Publish del SDK de AEM as a Cloud Service, que se ejecuta localmente en el puerto 4503, está disponible a través de Dispatcher en http://localhost:8080.

Para ejecutar las herramientas de Dispatcher en la configuración de Dispatcher de un proyecto de Experience Manager, elija la carpeta dispatcher/src del proyecto.

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

Registros de herramientas de Dispatcher

Los registros de Dispatcher son útiles durante el desarrollo local para comprender si las solicitudes HTTP están bloqueadas y por qué. El nivel de registro se puede establecer prefiriendo la ejecución de docker_run con parámetros de entorno.

Los registros de Dispatcher Tools se emiten al resultado estándar cuando se ejecuta docker_run.

Los parámetros útiles para depurar Dispatcher incluyen:

  • DISP_LOG_LEVEL=Debug establece el registro del módulo de Dispatcher en el nivel de depuración
    • El valor predeterminado es: Warn
  • REWRITE_LOG_LEVEL=Debug establece el registro del módulo de reescritura del servidor web HTTP Apache en el nivel de depuración
    • El valor predeterminado es: Warn
  • DISP_RUN_MODE establece el "modo de ejecución" del entorno de Dispatcher y carga los archivos de configuración de Dispatcher de los modos de ejecución correspondientes.
    • Valores predeterminados de dev
  • Valores válidos: dev, stage o prod

Se pueden pasar uno o varios parámetros 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

Acceso a archivo de registro

AEM Se puede acceder directamente al servidor web Apache y a los registros de Dispatcher en el contenedor de Docker:

Cuándo actualizar las herramientas de Dispatcher dispatcher-tools-version

Las versiones de Dispatcher Tools aumentan con menos frecuencia que el Experience Manager y, por lo tanto, Dispatcher Tools requiere menos actualizaciones en el entorno de desarrollo local.

La versión de Dispatcher Tools recomendada es la que está empaquetada con el SDK de AEM as a Cloud Service que coincide con la versión as a Cloud Service en Experience Manager. Se puede encontrar la versión de AEM as a Cloud Service a través de Cloud Manager.

  • Cloud Manager AEM > Entornos, por entorno especificado por la etiqueta Versión de la versión

Versión de Experience Manager

Tenga en cuenta que la versión de Dispatcher Tools no coincide con la versión del Experience Manager.

Cómo actualizar el conjunto de líneas de base de las configuraciones de Apache y Dispatcher

El conjunto de línea de base de la configuración de Apache y Dispatcher se mejora regularmente y se lanza con la versión del SDK de AEM as a Cloud Service. AEM Se recomienda incorporar las mejoras de configuración de línea de base en el proyecto de y evitar errores de validación local y de canalización de Cloud Manager. Actualícelos utilizando el script update_maven.sh de la carpeta .../dispatcher-sdk-x.x.x/bin.

Este vídeo utiliza macOS con fines ilustrativos. Los comandos equivalentes de Windows/Linux se pueden usar para obtener resultados similares.

AEM AEM Supongamos que ha creado un proyecto en el pasado utilizando Arquetipo de proyecto de, las configuraciones de línea base de Apache y Dispatcher eran actuales. Con estas configuraciones de línea de base, las configuraciones específicas del proyecto se crearon reutilizando y copiando archivos como *.vhost, *.conf, *.farm y *.any de las carpetas dispatcher/src/conf.d y dispatcher/src/conf.dispatcher.d. Su validación local de Dispatcher y sus canalizaciones de Cloud Manager funcionaban correctamente.

Mientras tanto, las configuraciones de línea base de Apache y Dispatcher se mejoraron por varias razones, como nuevas funciones, correcciones de seguridad y optimización. Se publican mediante una versión más reciente de las herramientas de Dispatcher como parte de la versión de AEM as a Cloud Service.

Ahora, al validar las configuraciones de Dispatcher específicas del proyecto con la última versión de Dispatcher Tools, comienzan a dar errores. Para resolver esto, es necesario actualizar las configuraciones de línea de base mediante los siguientes pasos:

  • Compruebe que la validación falla con la última versión de las herramientas de Dispatcher

    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!
    
  • Actualizar los archivos inmutables mediante el 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
    
  • Compruebe los archivos inmutables actualizados como dispatcher_vhost.conf, default.vhost y default.farm y, si es necesario, realice los cambios pertinentes en los archivos personalizados que se derivan de estos archivos.

  • Vuelva a validar la configuración y debería pasar.

$ ./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
  • Después de la verificación local de los cambios, confirme los archivos de configuración actualizados

Resolución de problemas

docker_run da como resultado el mensaje "Esperando hasta que host.docker.internal esté disponible" troubleshooting-host-docker-internal

host.docker.internal es un nombre de host proporcionado al contenedor Docker que se resuelve en el host. Por docs.docker.com (macOS, Windows):

A partir de Docker 18.03, la recomendación es conectarse al nombre DNS especial host.docker.internal, que se resuelve en la dirección IP interna utilizada por el host

Cuando bin/docker_run src host.docker.internal:4503 8080 dé como resultado el mensaje Esperando a que host.docker.internal esté disponible, entonces:

  1. Asegúrese de que la versión instalada de Docker sea 18.03 o superior
  2. Es posible que tenga configurado un equipo local que impida el registro o la resolución del nombre de host.docker.internal. En su lugar, utilice su IP local.
macOS
  • Desde el terminal, ejecute ifconfig y registre la dirección IP del host inet, normalmente el dispositivo en0.

  • A continuación, ejecute docker_run utilizando la dirección IP del host: $ bin/docker_run_hot_reload.sh src <HOST IP>:4503 8080

Windows
  • Desde el símbolo del sistema, ejecute ipconfig y registre la dirección IPv4 del host en el equipo host.

  • A continuación, ejecute docker_run con esta dirección IP: $ bin\docker_run src <HOST IP>:4503 8080

Linux®
  • Desde el terminal, ejecute ifconfig y registre la dirección IP del host inet, normalmente el dispositivo en0.

  • A continuación, ejecute docker_run utilizando la dirección IP del host: $ bin/docker_run_hot_reload.sh src <HOST IP>:4503 8080

Error de ejemplo

$ 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

Recursos adicionales

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