Show Menu
主題×

升級前維護任務

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

確保有足夠的磁碟空間

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

完全備份AEM

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

備份/etc的更改

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

生成quickstart.properties檔案

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

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

這些 WorkflowPurgeTask 和任 com.day.cq.audit.impl.AuditLogMaintenanceTask 務需要單獨的OSGi配置,沒有它們將無法工作。 如果在升級前任務執行期間失敗,則最可能的原因是缺少配置。 因此,如果您不想運行這些任務,請務必為這些任務添加OSGi配置,或將它們從升級前優化任務清單中完全刪除。 如需設定工作流程清除工作的檔案,請參閱「管理工作流程例項 」( Administering Workflow Instances ),而「稽核記錄維護」(audit log Maintenance in AEM 6 )則提供稽核記錄維護工作設定。
如需CQ 5.6上的工作流程和稽核記錄清除,以及AEM 6.0上的稽核記錄清除,請參閱「清 除工作流程和稽核節點」

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

由於AEM所允許的自訂層級,環境通常無法遵循統一的升級方式。 因此,建立標準化的升級程式是個困難的程式。
在舊版中,AEM升級也很難停止或無法安全恢復。 這會導致需要重新啟動完整升級程式或執行有缺陷的升級而未觸發任何警告的情況。
為瞭解決這些問題,Adobe在升級程式中增加了數種增強功能,讓其更具彈性,而且更方便使用。 以前必須手動執行的升級前維護任務正在優化和自動化。 此外,已新增升級後報表,讓程式可以完全審查,以期更容易發現任何問題。
升級前維護任務目前分散在手動執行部分或全部的各種介面上。 AEM 6.3中引進的升級前維護最佳化功能,可讓您以統一的方式觸發這些工作,並可視需要檢查結果。
升級前最佳化步驟中包含的所有工作都與AEM 6.0以後的所有版本相容。

如何設定

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

How to Use It

OSGI PreUpgradeTasksMBean 元件已預先設定好升級前維護工作清單,可一次執行。 您可以按照以下過程配置任務:
  1. 瀏覽至https://serveraddress:serverport/system/console/configMgr以前往Web Console(網頁控制 台)
  2. 搜尋「預​ 升級任務 」,然後按一下第一個相符的元件。 元件的完整名稱為 com.adobe.aem.upgrade.prechecks.mbean.impl.PreUpgradeTasksMBeanImpl
  3. 修改需要運行的維護任務清單,如下所示:
根據用於啟動實例的運行模式,任務清單會有所不同。 以下是每個維護任務的運行模式說明。
任務 執行模式 附註
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 正在調用帶有標籤和掃描階段的資料儲存廢棄項目收集操作(如果使用)。 對於使用共用資料儲存的部署,請確保重新配置或正確地準備實例,以避免刪除其他實例引用的項。 這可能需要在觸發此升級前任務之前,在所有實例上手動運行標籤階段。

Pre-Upgrade Health Checks的預設配置

OSGI PreUpgradeTasksMBeanImpl 元件會預先設定升級前狀態檢查標籤清單,以便在呼叫方法時 runAllPreUpgradeHealthChecks 執行:
  • system - granite維護健康檢查所使用的標籤
  • pre-upgrade —— 這是自訂標籤,可新增至您可設定為在升級前執行的所有健康狀況檢查
可編輯清單。 您可以使用標 簽以外的加號 (+)和減號 (-)按鈕來新增更多自訂標籤,或移除預設標籤。
MBean方法
您可以通過以下方式訪問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 preUpgradeHCStatus.properties home路徑中的名稱檔案中。 如果參 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的任何現有組態。
要禁用在的JAAS配置中定義的自定義模 repository.xml 塊,您需要修改配置以使用預設 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的檔案

視需要升級資料庫模式

通常,用於永續性的基礎Apache Oak stack AEM會視需要負責升級資料庫架構。
但是,當模式無法自動升級時,可能會發生這種情況。 這些環境大多是高安全性環境,資料庫在權限非常有限的用戶下運行。 如果發生此情況,AEM將繼續使用舊的架構。
為防止這種情況發生,您需要按照以下過程升級模式:
  1. 關閉需要升級的AEM例項。
  2. 升級資料庫模式。 請查閱您的資料庫類型檔案,以瞭解您要達到此目的,需要使用哪些工具。
    如需Oak如何處理架構升級的詳細資訊,請參 閱Apache網站的本頁
  3. 繼續升級AEM。

刪除可能妨礙升級的用戶

只有在下列情況下,才需要執行此升級前維護任務:
  • 您是從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.

為瞭解決此問題,請確定您執行下列動作:
  1. 將例項與生產流量分離
  2. 建立導致問題的用戶的備份。 您可以通過「包管理器」執行此操作。 如需詳細資訊,請參 閱如何使用套件。
  3. 刪除導致問題的用戶。 以下是可能屬於此類別的使用者清單:
    1. dynamic-media-replication
    2. communities-ugc-writer
    3. communities-utility-reader
    4. communities-user-admin
    5. oauthservice
    6. sling-scripting

旋轉日誌檔案

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