備注:如果您在升級時遇到任何問題,請查看“升級時可能出現的問題”部分。
1.升級前
- 在運行升級之前,請確保您的系統符合新版本兼容性矩陣。
- 檢查兼容性矩陣有關兼容版本的完整信息。
- 建議您在開發實例中運行升級過程并進行測試。僅在測試后,將升級版本部署到生產實例
- 在升級之前,請確保創建實例代碼和數據庫的備份。
- 默認情況下,升級命令將設置
error_reporting
到一個不太嚴格的模式來抑制警告。- error_reporting 值集是
E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE & ~E_WARNING
-vvv
如果你想應用更嚴格的模式,你可以在每個命令上指定。這將E_ALL
設置error_reporting
- error_reporting 值集是
- 請注意,升級過程可能會刪除項目文件夾下的任何非核心文件/
root
目錄或public/legacy/
文件夾 - 在運行接下來描述的任何命令之前,請確保您的 SuiteCRM 8 實例
APP_ENV
被設定為APP_ENV=prod
模式(檢查.env
和’.env.local’文件)
2. SuiteCRM 8.x版本之間的升級
本節僅在升級到等于或大于 8.2.x 的版本時適用。
如需升級到 8.2.x 之前的版本,請參閱第 3 節。在 SuiteCRM 8.0.x 到 8.1.x 版本之間升級
2.1.?下載新版本包
對于 SuiteCRM 8.x 版本之間的升級,沒有任何特定于升級的包。升級是使用我們要升級到的版本的安裝包完成的。
1.在您當前的實例上創建以下文件夾:
<your-suitecrm-8-root-folder>/tmp/package/upgrade
2.下載SuiteCRM 8目標版本安裝包https://suitecrm.com/download/
3.將包裹放在<your-suitecrm-8-root-folder>/tmp/package/upgrade
文件夾
4.如果需要重新設置正確的權限。
2.2.?運行升級命令
1.在您的 SuiteCRM 8 實例根目錄上運行:./bin/console suitecrm:app:upgrade -t "<version>"
- 在哪里
<version>
是您下載的 SuiteCRM 8 軟件包上的名稱,即SuiteCRM-8.2.0
- 例子:
./bin/console suitecrm:app:upgrade -t SuiteCRM-8.2.0
輸出應該是這樣的:
注意:請忽略libpng warning
SuiteCRM Upgrade
============
Running: check-package
step: check-package | status: done
Package found in path
Running: extract-package
step: extract-package | status: done
Package extracted
Running: check-permissions
step: check-permissions | status: done
Permissions checked
Running: install-upgrade-package
step: install-upgrade-package | status: done
Successfully installed package
Running: run-migrations
step: run-migrations | status: done
Successfully run migrations
Running: legacy-post-upgrade
libpng warning: Interlace handling should be turned on when using png_read_image
libpng warning: Interlace handling should be turned on when using png_read_image
libpng warning: Interlace handling should be turned on when using png_read_image
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: Interlace handling should be turned on when using png_read_image
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: Interlace handling should be turned on when using png_read_image
step: legacy-post-upgrade | status: done
Post Upgrade process complete
Running: clear-symfony-cache
2.3.?運行升級后命令
在您的 SuiteCRM 8 實例根目錄上運行:./bin/console suitecrm:app:upgrade-finalize -t "<version>"
2.3.1 元數據合并模式
在 finalize 命令中,您可以指定要用于合并元數據的合并模式。這可以通過-m
在suitecrm:app:upgrade-finalize
命令。keep
默認使用該模式。
接下來,您可以找到每種模式的描述以及如何使用它。
1. 保持模式
- 默認模式是保留現有的視圖元數據自定義,并且將簡單地跳過元數據合并過程。
- 如果你想在命令上指定你可以運行:
./bin/console suitecrm:app:upgrade-finalize -m keep
2. 合并模式
- 此模式將嘗試將您當前的視圖元數據自定義與每個模塊的新核心視圖元數據合并
- 合并后的元數據放在對應模塊的自定義文件夾中
public/legacy/custom/<Module>/metadata
- 以前版本的自定義項的備份文件添加到同一文件夾
- 您可以通過運行來使用合并模式
./bin/console suitecrm:app:upgrade-finalize -m merge
3. 覆蓋模式
- 此模式將使用新版本的核心元數據覆蓋您當前的自定義設置。
- 請注意,這將刪除您當前的自定義文件
public/legacy/custom/<Module>/metadata
- 您可以通過運行來使用合并覆蓋模式
./bin/console suitecrm:app:upgrade-finalize -m override
2.4.?重新設置權限
如果在遷移期間您使用的用戶/組與 apache(或其他網絡服務器)使用的用戶/組不同,您應該重新設置正確的權限
2.5.?(可選)重啟服務器以重置/清除 php 級緩存
如果您正在使用opcache
,apcu
或其他 php 緩存,您可能需要重新啟動網絡服務器以使新代碼生效。
2.6.?打開你的實例
如果上述所有步驟都按預期進行,您現在應該能夠登錄到您的實例。
2.6.?調試
查看5.日志和調試部分有關如何調試的信息。
3.從SuiteCRM 8.0.x升級到8.1.x版本
本節僅適用于大于 8.0.0-rc 到 8.1.x 的版本
3.1.?下載新版本包
對于 SuiteCRM 8.x 版本之間的升級,沒有任何特定于升級的包。升級是使用我們要升級到的版本的安裝包完成的。
1.在您當前的實例上創建以下文件夾:
<your-suitecrm-8-root-folder>/tmp/package/upgrade
2.下載SuiteCRM 8目標版本安裝包https://suitecrm.com/download/
3.將包裹放在<your-suitecrm-8-root-folder>/tmp/package/upgrade
文件夾
4.如果需要重新設置正確的權限。
3.2.?運行升級命令
1.在您的 SuiteCRM 8 實例根目錄上運行:./bin/console suitecrm:app:upgrade -t "<version>"
- 在哪里
<version>
是您下載的 SuiteCRM 8 軟件包上的名稱,即SuiteCRM-8.1.1
- 例子:
./bin/console suitecrm:app:upgrade -t SuiteCRM-8.1.1
輸出應該是這樣的:
注意:請忽略libpng warning
SuiteCRM Upgrade
============
Running: check-package
step: check-package | status: done
Package found in path
Running: extract-package
step: extract-package | status: done
Package extracted
Running: check-permissions
step: check-permissions | status: done
Permissions checked
Running: install-upgrade-package
step: install-upgrade-package | status: done
Successfully installed package
Running: run-migrations
step: run-migrations | status: done
Successfully run migrations
Running: legacy-post-upgrade
libpng warning: Interlace handling should be turned on when using png_read_image
libpng warning: Interlace handling should be turned on when using png_read_image
libpng warning: Interlace handling should be turned on when using png_read_image
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: Interlace handling should be turned on when using png_read_image
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: Interlace handling should be turned on when using png_read_image
step: legacy-post-upgrade | status: done
Post Upgrade process complete
Running: clear-symfony-cache
2.如果需要,重新設置權限
3.3.?打開你的實例
完成上述所有步驟后,您現在應該能夠登錄到您的 SuiteCRM 實例。
4.預發布候選版本的升級
在測試從 Beta 3 到 RC 的升級時發現了一些錯誤。本節中的步驟說明了如何解決這些問題。這些問題已在 RC 版本中修復。
從 SuiteCRM 8 Beta 3 升級到 SuiteCRM 8 RC
4.1.?準備升級。
要克服上述問題,您需要對代碼庫進行以下更改。
1.打開config/services/system/upgrades.yaml
配置文件。
2.添加tmp
條目到toKeep
部分。
它應該是這樣的:
parameters:
upgrades:
toKeep:
- 'cache'
- 'extensions'
- 'public/extensions'
- 'public/legacy/modules'
- 'public/legacy/custom'
- 'public/legacy/cache'
- 'public/legacy/upload'
- 'public/legacy/Api/V8/OAuth2/private.key'
- 'public/legacy/Api/V8/OAuth2/public.key'
- 'public/legacy/config.php'
- 'public/legacy/config_override.php'
- 'public/legacy/config_si.php'
- 'public/legacy/suitecrm.log'
- 'public/legacy/install.log'
- 'logs'
- '.env.local'
- '.env.local.php'
- 'tmp'
toExpand:
...
3.運行:
- 對于開發模式運行:
composer install
- 對于產品模式運行:
composer install --no-dev --prefer-dist --optimize-autoloader
4.2.?下載RC包
1.在您當前的實例上創建以下文件夾:
<your-suitecrm-8-root-folder>/tmp/package/upgrade
2.下載 SuiteCRM 8 RC 預構建/可安裝包
3.將包裹放在<your-suitecrm-8-root-folder>/tmp/package/upgrade
文件夾
4.如果需要重新設置正確的權限。
4.3.?運行升級命令
運行從 Beta 3 到 RC 版本的升級命令時存在一個已知問題。接下來將解釋克服此問題的步驟。
1.在您的 SuiteCRM 8 實例根目錄上運行:./bin/console suitecrm:app:upgrade -t "<version>"
- 在哪里
<version>
是 SuiteCRM 8 RC 包上的名稱
命令的輸出應該是這樣的:
注意:請忽略以上內容libpng warning
SuiteCRM Upgrade
============
Running: check-package
step: check-package | status: done
Package found in path
Running: extract-package
step: extract-package | status: done
Package extracted
Running: check-permissions
step: check-permissions | status: done
Permissions checked
Running: install-upgrade-package
step: install-upgrade-package | status: done
Successfully installed package
Running: run-migrations
step: run-migrations | status: done
Successfully run migrations
Running: legacy-post-upgrade
libpng warning: Interlace handling should be turned on when using png_read_image
libpng warning: Interlace handling should be turned on when using png_read_image
libpng warning: Interlace handling should be turned on when using png_read_image
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: Interlace handling should be turned on when using png_read_image
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: Interlace handling should be turned on when using png_read_image
step: legacy-post-upgrade | status: done
Post Upgrade process complete
在命令的最后一步中,您應該會收到以下錯誤
Running: clear-symfony-cache
PHP Fatal error: Interface 'Stringable' not found in /<your-suitecr-8-path>/vendor/symfony/string/AbstractString.php on line 30
Symfony\Component\ErrorHandler\Error\ClassNotFoundError^ {#3095
#message: """
Attempted to load class "UnicodeString" from namespace "Symfony\Component\String".\n
Did you forget a "use" statement for another namespace?
"""
#code: 0
#file: "./vendor/symfony/console/Helper/Helper.php"
#line: 63
trace: {
./vendor/symfony/console/Helper/Helper.php:63 { …}
./vendor/symfony/console/Helper/Helper.php:49 { …}
./vendor/symfony/console/Application.php:826 { …}
./vendor/symfony/console/Application.php:795 { …}
./vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php:136 { …}
./vendor/symfony/error-handler/ErrorHandler.php:607 { …}
./vendor/symfony/error-handler/ErrorHandler.php:695 { …}
Symfony\Component\ErrorHandler\ErrorHandler::handleFatalError() {}
}
}
2. 要克服上述錯誤,您需要清除 symfony 緩存
- 在您的 SuiteCRM 8 實例根目錄上,請運行:
./bin/console cache:clear
3.如果需要,重新設置權限
4.4.?打開你的實例
如果上述所有步驟都按預期進行,您現在應該能夠登錄到您的實例。
5. 日志和調試
5.1 日志
升級期間使用的命令提供了一些步驟及其執行結果的信息。但是,當發生錯誤時,此信息是不夠的。
有一些日志可能會提供更多信息:
日志/升級.log
這些是 SuiteCRM 8 端的升級日志生成的日志。
公共/遺留/upgradeWizard.log
這些是由應用程序的遺留部分生成的升級特定日志。該文件是在legacy-post-upgrade
步。
日志/<app-env-mode>/<app-env-mode>.log
主應用程序日志。它的文件路徑和名稱根據您設置的值而變化APP_ENV
. 例如,如果它設置為prod
路徑將是logs/prod/prod.log
很可能,此日志不會有太多升級信息。
公共/遺留/suitecrm.log
這是應用程序遺留部分的主要日志位置。它可能包含與升級相關的日志,以及其他日志。
5.2 APP_ENV模式
在生產環境中運行應用程序時APP_ENV
在.env
或在.env.local
應設置為prod
。但是這種模式的日志級別很高,這意味著并不是所有的調試信息都會被記錄下來。
獲取更多日志的一種方法是更改APP_ENV
至qa
(此模式只能臨時使用)。
之后APP_ENV
您可能必須清除 symfony 緩存。
6. 升級可能出現的問題
8.1.0
在版本→之間執行升級命令時發現了一個問題8.1.1
。
問題是,第二次升級 SuiteCRM 8 時(即如果您從8.0.2
→ 8.0.4
→升級8.1.1
),那么您在運行后會遇到以下錯誤: ./bin/console suitecrm:app:upgrade -t "<version>"
CRITICAL [php] Fatal Compile Error: require(): Failed opening required '/<pathtoSuiteCRM8>/cache/prod/ContainerZatgzYy/getConsole_ErrorListenerService.php'
(include_path='/<pathtoSuiteCRM8>/public/legacy/include/..:.:/usr/share/php')
["exception" => Symfony\Component\ErrorHandler\Error\FatalError^ { …}]
此問題是 Symfony 緩存清除但隨后被立即調用的結果。
6.1 分辨率
這個問題可以通過重新設置權限來解決./bin/console/ clear:cache
在 SuiteCRM 8 根目錄中。
然后您應該能夠導航到您的應用程序。