Pimcore从V10升级到V11的完整指南
前言
Pimcore作为一款强大的开源数字体验平台,其版本迭代带来了诸多改进和新特性。本文将详细介绍如何从Pimcore 10.x版本平滑升级到11.x版本,帮助开发者规避升级过程中的常见问题。
升级前的准备工作
系统设置迁移
Pimcore 11采用了LocationAwareConfigRepository来管理系统设置,这带来了更灵活的配置管理方式。在升级前需要完成以下操作:
-
数据库字段类型调整:
- 将
json_array
类型字段改为json
类型 - 使用以下命令检查需要修改的字段:
mysqldump -u <用户名> -p <密码> --no-data <数据库名> | grep -i json_array
- 将
-
外观与品牌设置分离:
- 将
var/config/system.yaml
中的相关设置迁移到var/config/admin_system_settings/admin_system_settings.yaml
- 配置示例如下:
pimcore_admin: config_location: admin_system_settings: write_target: type: 'settings-store' read_target: type: 'settings-store'
- 将
-
系统设置迁移:
- 将剩余系统设置迁移到
var/config/system_settings/system_settings.yaml
- 配置示例如下:
pimcore: config_location: system_settings: write_target: type: 'settings-store' read_target: type: 'settings-store'
- 将剩余系统设置迁移到
功能模块配置处理
Pimcore 11将部分功能拆分为独立模块,需要特别注意:
-
Web2Print功能:
- 如果使用该功能,确保启用"在默认文档视图中显示Web2Print文档"选项
- 不使用则建议关闭该选项
-
富文本编辑器安全配置:
- 更新HTML标签白名单配置,确保所需标签和属性被允许
-
Redis缓存配置:
- 更新缓存配置以适应新版本:
framework: cache: pools: pimcore.cache.pool: public: true default_lifetime: 31536000 adapter: cache.adapter.redis_tag_aware
- 更新缓存配置以适应新版本:
执行升级操作
通过Composer升级核心
执行以下命令进行核心升级:
composer require -W pimcore/pimcore:^11.0 pimcore/admin-ui-classic-bundle
注意:根据项目实际情况,可能需要添加额外的依赖项或清理composer.lock
和vendor
目录。
升级后的必要操作
核心配置更新
-
注册Admin Bundle:
- 在
src/Kernel.php
中添加:$collection->addBundle(new \Pimcore\Bundle\AdminBundle\PimcoreAdminBundle(), 60);
- 在
-
安全配置更新:
- 按照最新格式更新
config/packages/security.yaml
- 按照最新格式更新
-
路径引用更新:
- 将
@PimcoreCoreBundle/Resources/config/...
更新为@PimcoreCoreBundle/config/...
- 注意将
routing.yml
改为routing.yaml
- 将
功能模块安装与配置
-
安装可选模块:
composer require pimcore/system-info-bundle pimcore/file-explorer-bundle pimcore/personalization-bundle pimcore/google-marketing-bundle pimcore/web-to-print-bundle pimcore/ecommerce-framework-bundle pimcore/newsletter-bundle
-
激活模块:
- 在
config/bundles.php
中添加需要的模块,例如:\Pimcore\Bundle\EcommerceFrameworkBundle\PimcoreEcommerceFrameworkBundle::class => ['all' => true], \Pimcore\Bundle\PersonalizationBundle\PimcorePersonalizationBundle::class => ['all' => true]
- 在
-
恢复模块配置:
- 重新激活各模块的配置存储设置
数据迁移与清理
-
执行数据库迁移:
bin/console doctrine:migrations:migrate
-
清理无用数据:
- 对于不使用的Web2Print功能:
bin/console pimcore:documents:cleanup printpage printcontainer
- 对于不使用的Newsletter功能:
bin/console pimcore:documents:cleanup newsletter
- 对于不使用的Web2Print功能:
-
移除废弃设置:
bin/console pimcore:assets:remove-custom-setting faceCoordinates bin/console pimcore:assets:remove-custom-setting disableFocalPointDetection bin/console pimcore:assets:remove-custom-setting disableImageFeatureAutoDetection
系统重建
-
重建数据结构:
bin/console doctrine:migration:exec 'Pimcore\Bundle\CoreBundle\Migrations\Version20240708083500'
-
清理旧配置:
- 确认迁移完成后可删除
var/config/system.yaml
- 确认迁移完成后可删除
服务器配置调整
-
WebDav路径变更:
- 根据新版本要求更新Nginx配置
-
消息队列配置:
- 更新Symfony Messenger worker配置,添加新的接收器:
pimcore_scheduled_tasks
pimcore_image_optimize
pimcore_asset_update
pimcore_search_backend_message
- 更新Symfony Messenger worker配置,添加新的接收器:
总结
Pimcore 11带来了更模块化的架构和多项改进。按照本文步骤执行升级,可以确保平稳过渡到新版本。升级完成后,建议进行全面测试,特别是自定义功能和集成部分,以确保所有功能正常工作。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考