SuiteCRM 8.x版本之间的升级

备注:如果您在升级时遇到任何问题,请查看“升级时可能出现的问题”部分。

1.升级前

  1. 在运行升级之前,请确保您的系统符合新版本兼容性矩阵
  2. 建议您在开发实例中运行升级过程并进行测试。仅在测试后,将升级版本部署到生产实例
  3. 在升级之前,请确保创建实例代码和数据库的备份。
  4. 默认情况下,升级命令将设置error_reporting到一个不太严格的模式来抑制警告。
    • error_reporting 值集是E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE & ~E_WARNING
    • -vvv如果你想应用更严格的模式,你可以在每个命令上指定。这将E_ALL设置error_reporting
  5. 请注意,升级过程可能会删除项目文件夹下的任何非核心文件/root目录或public/legacy/文件夹
  6. 在运行接下来描述的任何命令之前,请确保您的 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 命令中,您可以指定要用于合并元数据的合并模式。这可以通过-msuitecrm: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 级缓存

如果您正在使用opcacheapcu或其他 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_ENVqa(此模式只能临时使用)。

之后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 根目录中。

然后您应该能够导航到您的应用程序。

滚动至顶部