升級前維護任務

在開始升級之前,請務必執行這些維護任務,以確保系統已就緒,並且如果出現以下問題,可以回滾:

確保有足夠的磁碟空間

執行升級時,除了內容和代碼升級活動外,還需要執行儲存庫遷移。 遷移將以新的段Tar格式建立儲存庫的副本。 因此,您需要足夠的磁碟空間來保留第二個可能更大的儲存庫版本。

完全備份AEM

AEM應在開始升級之前完全備份。 請務必備份您的儲存庫、應用程式安裝、資料儲存和Mongo實例(如果適用)。 有關備份和還原AEM實例的詳細資訊,請參閱備份和還原

備份對/etc的更改

升級過程在維護和合併儲存庫中/apps/libs路徑下的現有內容和配置方面做得很好。 對於對/etc路徑所做的更改(包括上下文集線器配置),通常需要在升級後重新應用這些更改。 雖然升級將會對/var下無法合併的任何更改進行備份,但建議在開始升級之前手動備份這些更改。

生成快速啟動。properties檔案

從jar檔案啟動AEM時,crx-quickstart/conf下會產生quickstart.properties檔案。 如果AEM過去只是以start指令碼啟動,此檔案將不存在,而且升級將會失敗。 請務必檢查此檔案是否存在,並從jar檔案重新啟動AEM(若未存在)。

配置工作流和審核日誌清除

WorkflowPurgeTaskcom.day.cq.audit.impl.AuditLogMaintenanceTask任務需要單獨的OSGi配置,沒有這些配置將無法工作。 如果在升級前任務執行期間失敗,則最可能的原因是缺少配置。 因此,如果您不想運行這些任務,請務必為這些任務添加OSGi配置,或將它們從升級前優化任務清單中完全刪除。 有關配置工作流清除任務的文檔,請訪問管理工作流實例 ,並可在 AEM 6中的審核日誌維護中找到審核日誌維護任務配置。

如需CQ 5.6上的工作流程和稽核記錄清除,以及AEM 6.0上的稽核記錄清除,請參閱清除工作流程和稽核節點

安裝、配置和運行升級前任務

由於AEM所允許的自訂層級,環境通常無法遵循統一的升級方式。 因此,建立標準化的升級程式是個困難的程式。

在舊版中,AEM升級也很難停止或無法安全恢復。 這會導致需要重新啟動完整升級程式或執行有缺陷的升級而未觸發任何警告的情況。

為瞭解決這些問題,Adobe在升級程式中增加了數種增強功能,讓其更具彈性,而且更方便使用。 以前必須手動執行的升級前維護任務正在優化和自動化。 此外,已新增升級後報表,讓程式可以完全審查,以期更容易發現任何問題。

升級前維護任務目前分散在手動執行部分或全部的各種介面上。 AEM 6.3中引進的升級前維護最佳化功能,可讓您以統一的方式觸發這些工作,並可視需要檢查結果。

升級前最佳化步驟中包含的所有工作都與AEM 6.0以後的所有版本相容。

如何設定

在AEM 6.3和更新版本中,快速啟動jar中包含升級前維護最佳化工作。 如果您是從舊版AEM 6升級,則可透過個別的套件取得,您可從「套件管理員」下載。

您可以在以下位置找到包:

如何使用

PreUpgradeTasksMBean OSGI元件預配置了可一次運行的升級前維護任務清單。 您可以按照以下過程配置任務:

  1. 瀏覽至https://serveraddress:serverport/system/console/configMgr以前往Web主控台

  2. 搜索「預升級任務」,然後按一下第一個匹配元件。 元件的全名為com.adobe.aem.upgrade.prechecks.mbean.impl.PreUpgradeTasksMBeanImpl

  3. 修改需要運行的維護任務清單,如下所示:

    1487758925984

根據用於啟動實例的運行模式,任務清單會有所不同。 以下是每個維護任務的運行模式說明。

任務 執行模式 附註
TarIndexMergeTask crx2
DataStoreGarbageCollectionTask crx2 會進行標籤和掃描。 對於共用資料儲存,請刪除此步驟,然後在執行前手動或正確地準備實例。
ConsistencyCheckTask crx2
WorkflowPurgeTask crx2/crx3 必須先設定Adobe Granite Workflow Purge Configuration OSGi,才能執行。
GenerateBundlesListFileTask crx2/crx3
RevisionCleanupTask crx3 對於AEM 6.0到6.2上的TarMK例項,請改為手動執行「離線修訂清除」。
com.day.cq.audit.impl.AuditLogMaintenanceTask crx3 必須在運行前配置Audit Log Purge Scheduler OSGi配置。
注意

DataStoreGarbageCollectionTask 正在調用帶有標籤和掃描階段的資料儲存廢棄項目收集操作(如果使用)。對於使用共用資料儲存的部署,請確保重新配置或正確地準備實例,以避免刪除其他實例引用的項。 這可能需要在觸發此升級前任務之前,在所有實例上手動運行標籤階段。

Default Configuration of the Pre-Upgrade Health Checks

PreUpgradeTasksMBeanImpl OSGI元件預配置了升級前運行狀況檢查標籤清單,在調用runAllPreUpgradeHealthChecks方法時執行:

  • system - granite維護健康檢查所使用的標籤

  • pre-upgrade —— 這是自訂標籤,可新增至所有可設定為在升級前執行的健康狀態檢查

可編輯清單。 您可以使用標籤以外的加號​(+)​和減號​(-)​按鈕來新增更多自訂標籤,或移除預設標籤。

MBean方法

可使用JMX控制台訪問受管理的Bean功能。

您可以通過以下方式訪問MBean:

  1. 前往JMX控制台​https://serveraddress:serverport/system/console/jmx

  2. 搜索​PreUpgradeTasks​並按一下結果

  3. 從​Operations​區段中選擇任何方法,並在以下窗口中選擇​Invoke

以下是PreUpgradeTasksMBeanImpl公開的所有可用方法的清單:

方法名稱 類型 說明
getAvailablePreUpgradeTasksNames() 資訊 顯示可用的升級前維護任務名稱清單。
getAvailablePreUpgradeHealthChecksTagNames() 資訊 顯示升級前運行狀況檢查標籤名稱的清單。
runAllPreUpgradeTasks() 動作 運行清單中的所有升級前維護任務。
runPreUpgradeTask(preUpgradeTaskName) 動作 以參數的名稱運行升級前維護任務。
isRunAllPreUpgradeTaskRunning() ACTION_INFO 檢查runAllPreUpgradeTasksmaintenance任務當前是否正在運行。
getAnyPreUpgradeTaskRunning() ACTION_INFO 檢查是否當前正在運行任何升級前維護任務,並
返回包含當前運行任務名稱的陣列。
getPreUpgradeTaskLastRunTime(preUpgradeTaskName) 動作 顯示升級前維護任務的確切運行時間,其名稱為參數。
getPreUpgradeTaskLastRunState(preUpgradeTaskName) 動作 顯示升級前維護任務的上次運行狀態,其名稱為參數。
runAllPreUpgradeHealthChecks(shutDownOnSuccess) 動作

執行所有升級前的健康狀況檢查,並將其狀態儲存在位於sling home路徑中名為preUpgradeHCStatus.properties的檔案中。 如果shutDownOnSuccess參數設為true,則AEM例項將會關閉,但前提是所有升級前的健康狀況檢查都有「正常」狀態。

屬性檔案將用作任何以後升級的先決條件
,如果升級前運行狀況檢查
執行失敗,則升級過程將停止。 如果您要忽略升級前的
運行狀況檢查的結果並且仍要啟動升級,則可以刪除該檔案。

detectUsageOfUnavailableAPI(aemVersion) 動作 列出當
升級至指定的AEM版本時,將不再符合的所有匯入封裝。 目標AEM版本必須
指定為參數。
注意

MBean方法可以通過以下方式調用:

  • JMX主控台
  • 連線至JMX的任何外部應用程式
  • cURL

禁用自定義登錄模組

注意

只有當您從AEM 5版本升級時,才需要此步驟。 您可完全略過它,以取得舊版AEM 6的升級。

在Apache Oak中,自訂LoginModules在儲存庫層級的驗證配置方式已發生根本性改變。

在使用CRX2組態的AEM版本中,repository.xml檔案會放入AEM 6之後,則會透過Web Console在Apache Felix JAAS Configuration Factory服務中完成。

因此,升級後,必須停用並重新建立Apache Oak的任何現有組態。

要禁用repository.xml的JAAS配置中定義的自定義模組,您需要修改配置以使用預設LoginModule,如本例所示:

<Security >
             ....
          <!--
                 Use LoginModule authenticating against repository itself
                 -->
                 <LoginModule class = "com.day.crx.core.CRXLoginModule" >
                     <param name = "anonymousId" value = "anonymous" />
                     <param name = "adminId" value ="admin" />
                     <param name = "disableNTLMAuth" value = "true" />
                     <param name = "tokenExpiration" value = "43200000" />
                     <!-- param name="trust_credentials_attribute" value="d5b9167e95dad6e7d3b5d6fa8df48af8"/
                -->
                 </LoginModule >
         </ Security>
注意

如需詳細資訊,請參閱使用外部登入模組進行驗證

如需AEM 6中LoginModule組態的範例,請參閱使用AEM 6設定LDAP。

從/install目錄中刪除更新

注意

只會在關閉AEM例項後,從crx-quickstart/install目錄移除套件。 這是開始就地升級程式之前的最後步驟之一。

刪除通過本地檔案系統上的crx-quickstart/install目錄部署的所有服務包、功能包或修補程式。 如此可避免在更新完成後,在新AEM版本之上意外安裝舊的修補程式和服務套件。

停止任何冷備用實例

如果使用TarMK冷備用,請停止任何冷備用實例。 這些功能可確保在升級時有效率地回到線上。 升級成功後,需要從升級的主實例重建冷備用實例。

停用自訂排程工作

停用應用程式程式碼中包含的任何OSGi排程工作。

執行離線修訂清除

注意

此步驟僅對於TarMK安裝是必要的

如果使用TarMK,您應在升級前執行離線修訂清除。 這將使儲存庫遷移步驟和後續升級任務的執行速度大大加快,並有助於確保線上修訂清除功能在升級完成後能夠成功執行。 有關運行離線修訂清除的資訊,請參閱執行離線修訂清除

執行資料儲存廢棄項目收集

注意

只有執行crx3的例項才需要此步驟

對CRX3實例運行修訂清除後,您應運行資料儲存廢棄項目收集來刪除資料儲存中任何未引用的blob。 如需指示,請參閱Data Store Garbage Collection上的說明檔案。

刪除可能妨礙升級的用戶

注意

只有在下列情況下,才需要執行此升級前維護任務:

  • 您是從AEM 6.3以前的AEM版本升級
  • 在升級期間,您會遇到下列任何錯誤。

有些例外的情況是,服務使用者可能會以舊版AEM錯誤地標籤為一般使用者。

如果發生此情況,升級將失敗,並出現如下訊息:

ERROR [Apache Sling Repository Startup Thread] com.adobe.granite.repository.impl.SlingRepositoryManager Exception in a SlingRepositoryInitializer, SlingRepository service registration aborted java.lang.RuntimeException: Unable to create service user [communities-utility-reader]:java.lang.RuntimeException: Existing user communities-utility-reader is not a service user.

為瞭解決此問題,請確定您執行下列動作:

為瞭解決此問題,請確定您執行下列動作:

  • 將例項與生產流量分離
  • 建立導致問題的用戶的備份。 您可以通過「包管理器」執行此操作。 有關詳細資訊,請參見如何使用包
  • 刪除導致問題的用戶。 以下是可能屬於此類別的使用者清單:
    • 動態媒體複製
    • communities-ugc-writer
    • 社群——效用——閱讀器
    • 社群——使用者——管理員
    • outhservice
    • sling-scripting

如果需要,請升級資料庫模式

通常,用於永續性的基礎Apache Oak stack AEM會視需要負責升級資料庫架構。

但是,當模式無法自動升級時,可能會發生這種情況。 這些環境大多是高安全性環境,資料庫在權限非常有限的用戶下運行。 如果發生此情況,AEM將繼續使用舊的架構。

為防止這種情況發生,您需要按照以下過程升級模式:

  1. 關閉需要升級的AEM例項。

  2. 升級資料庫模式。 請查閱您的資料庫類型檔案,以瞭解您要達到此目的,需要使用哪些工具。

    如需Oak如何處理架構升級的詳細資訊,請參閱Apache網站](https://jackrabbit.apache.org/oak/docs/nodestore/document/rdb-document-store.html#upgrade)上的[本頁。

  3. 繼續升級AEM。

旋轉日誌檔案

建議您在開始升級之前,先封存您目前的記錄檔。 這樣,在升級期間和升級後監視和掃描日誌檔案將更加容易,以識別和解決可能發生的任何問題。

本頁內容