Adobe Experience Manager(AEM)的Dispatcher是Apache HTTP Web伺服器模組,可在CDN和AEM Publish層級之間提供安全性和效能層。 Dispatcher是整體Experience Manager架構的必要部分,且應是本機開發設定的一部分。
AEMas a Cloud ServiceSDK包含建議的Dispatcher工具版本,有助於在本機設定、驗證和模擬Dispatcher。 Dispatcher工具由下列部分組成:
.../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
請注意 ~
用作用戶目錄的簡稱。 在Windows中,這等同於 %HOMEPATH%
.
本頁的影片已記錄在macOS上。 Windows使用者可以跟著,但使用每個視訊隨附的同等Dispatcher工具Windows命令。
AEMas a Cloud ServiceSDK(或AEM SDK)包含Dispatcher工具,可在本機執行具有Dispatcher模組的Apache HTTP Web伺服器以進行開發,以及相容的QuickStart Jar。
如果AEMas a Cloud ServiceSDK已下載至 設定本機AEM執行階段,則不需要重新下載。
Windows使用者在包含本機Dispatcher工具之資料夾的路徑中,不能有任何空格或特殊字元。 如果路徑中有空格,則 docker_run.cmd
會失敗。
Dispatcher工具的版本與AEM SDK的版本不同。 確認Dispatcher工具的版本是透過與AEMas a Cloud Service版本相符的AEM SDK版本提供。
aem-sdk-xxx.zip
檔案~/aem-sdk/dispatcher
aem-sdk-dispatcher-tools-x.x.x-windows.zip
into C:\Users\<My User>\aem-sdk\dispatcher
(視需要建立遺失資料夾)aem-sdk-dispatcher-tools-x.x.x-unix.sh
解壓縮Dispatcher工具
chmod a+x aem-sdk-dispatcher-tools-x.x.x-unix.sh && ./aem-sdk-dispatcher-tools-x.x.x-unix.sh
請注意,下面發出的所有命令都假設當前工作目錄包含展開的Dispatcher工具內容。
此影片說明用途使用macOS。 可以使用等效的Windows/Linux命令來獲得類似的結果
Experience Manager從 AEM專案Maven原型 會預先填入這組Dispatcher設定檔,因此不需要從Dispatcher工具src資料夾複製。
Dispatcher工具提供一組Apache HTTP Web伺服器和Dispatcher設定檔,可定義所有環境的行為,包括本機開發。
這些檔案會複製到Experience ManagerMaven專案中,並複製到 dispatcher/src
,如果Experience ManagerMaven專案中尚未存在。
未封裝的Dispatcher工具中提供設定檔案的完整說明,如下所示 dispatcher-sdk-x.x.x/docs/Config.html
.
(可選)Dispatcher和Apache Web伺服器設定(透過 httpd -t
)可透過 validate
指令碼(不要與 validator
執行檔)。 此 validate
指令碼提供了一種方便的運行方式 3階段 的 validator
.
bin\validate src
./bin/validate.sh ./src
AEM Dispatcher是使用Docker對 src
Dispatcher與Apache Web伺服器組態檔。
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>
可設為 host.docker.internal
,Docker在解析至主機IP的容器中提供特殊的DNS名稱。 如果他 host.docker.internal
無法解析,請參閱 疑難排解 一節。
例如,若要使用Dispatcher工具提供的預設組態檔來啟動Dispatcher Docker容器:
啟動Dispatcher Docker容器,提供Dispatcher設定src資料夾的路徑:
bin\docker_run src host.docker.internal:4503 8080
./bin/docker_run.sh ./src host.docker.internal:4503 8080
AEMas a Cloud ServiceSDK的Publish Service(在本機連接埠4503上執行)可透過Dispatcher取得,位於 http://localhost:8080
.
若要針對Experience Manager專案的Dispatcher設定執行Dispatcher工具,請指向您專案的 dispatcher/src
檔案夾。
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
在本機開發期間,Dispatcher記錄檔有助於了解HTTP要求是否遭到封鎖及其原因。 您可以預先設定 docker_run
搭配環境參數。
Dispatcher工具記錄檔會在 docker_run
執行中。
用於偵錯Dispatcher的實用參數包括:
DISP_LOG_LEVEL=Debug
將Dispatcher模組記錄設為「除錯」層級
Warn
REWRITE_LOG_LEVEL=Debug
將Apache HTTP Web伺服器重寫模組日誌設定為Debug級別
Warn
DISP_RUN_MODE
設定Dispatcher環境的「執行模式」,並載入相應的執行模式Dispatcher設定檔案。
dev
dev
, stage
,或 prod
一或多個參數可傳遞至 docker_run
窗口:
$ 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
您可以在Docker容器中直接存取Apache Web伺服器和AEM Dispatcher記錄檔:
Dispatcher工具版本的遞增頻率比Experience Manager低,因此,Dispatcher工具在本機開發環境中需要的更新較少。
建議的Dispatcher工具版本是與AEMas a Cloud ServiceSDK搭配的,與Experience Manageras a Cloud Service版本相符。 AEM as a Cloud Service版本可透過 Cloud Manager.
請注意,Dispatcher工具版本本身將不符合Experience Manager版本。
host.docker.internal
是提供給Docker包含的主機名,它解析到主機。 根據docs.docker.com(macOS, Windows):
從Docker 18.03開始,我們的建議是連線至特殊的DNS名稱host.docker.internal,其解析至主機使用的內部IP位址
如果,當 bin/docker_run src host.docker.internal:4503 8080
結果訊息 等待主機.docker.internal可用,然後:
host.docker.internal
名稱。 請改用本機IP。
在命令提示符下,執行 ipconfig
,並記錄主機的 IPv4地址 主機。
然後,執行 docker_run
使用此IP地址:
bin\docker_run src <HOST IP>:4503 8080
從終端機執行 ifconfig
並記錄主機 ine IP位址,通常為 en0 裝置。
然後執行 docker_run
使用主機IP地址:
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