Skip to content

Instantly share code, notes, and snippets.

@vidarl
Last active June 7, 2021 10:29
Show Gist options
  • Save vidarl/d32247a9e204fa8902676776d0433cc5 to your computer and use it in GitHub Desktop.
Save vidarl/d32247a9e204fa8902676776d0433cc5 to your computer and use it in GitHub Desktop.
malaga_2020_migration_presentation
Install 5.4
###########
### preperations
in /var/www/ps/malaga/malagaezp54
https://github.com/vidarl/ezp-toolkit#install-ez-publish-platform-5x--54-
Install 2.5
###########
### preperation
cd /var/www/ps/malaga
git clone https://github.com/ezsystems/ezplatform-ee.git malaga_ezp25
cd malaga_ezp25/
git checkout v2.5.8
vi .env
COMPOSE_PROJECT_NAME=malagaezp25b
docker-compose up -d
cp ~/.composer/auth.json auth.json
Install toolkit for easy db upgrade:
mkdir external && cd external && git clone https://github.com/vidarl/ezp-toolkit && cd ezp-toolkit && cd ../..
# Install mysql client in container
docker-compose exec app bash
apt-get update; apt-get install -y vim less openssh-client procps mysql-client
docker-compose exec --user www-data app bash
COMPOSER_HOME="/tmp/.composer" COMPOSER_MEMORY_LIMIT=-1 composer install
cd /var/www/ps/malaga/malagaezp54
docker-compose up -d
### Demo start
http://localhost:8081/eng/Products
http://localhost:8081/ezdemo_site/Products
http://localhost:8081/ezdemo_site_admin/
cd /var/www/ps/malaga/malagaezp54
docker-compose down
/var/www/ps/malaga/malaga_ezp25
docker-compose up -d
https://doc.ezplatform.com/en/2.5/migrating/migrating_from_ez_publish_platform/
diff -ruN ../malagaezp54/composer.json composer.json|less
- "ezsystems/ezpublish-legacy": "^5.4.14",
- "ezsystems/demobundle": "^5.4.6",
- "ezsystems/comments-bundle": "^5.4.8",
- "whiteoctober/breadcrumbs-bundle": "~1.0.1",
- "nelmio/cors-bundle": "~1.3",
- "hautelook/templated-uri-bundle": "~1.0 | ~2.0",
- "sensio/framework-extra-bundle": "~3.0",
docker-compose exec --user www-data app bash
COMPOSER_HOME="/tmp/.composer" COMPOSER_MEMORY_LIMIT=-1 composer require --no-update "ezsystems/ezplatform-xmltext-fieldtype:^1.3.0"
diff -ruN ../malagaezp54/ezpublish/config/parameters.yml app/config/parameters.yml
(no changed needed)
diff -ruN ../malagaezp54/ezpublish/config/ezpublish.yml app/config/ezplatform.yml|less
# NOTE !!!
comment out ez_publish_legacy section for now, must be re-enabled *AFTER* legacy-bridge is installed
cp ../ezplatform.yml_step1 app/config/ezplatform.yml
Check for custom bundels:
diff -ruN ../malagaezp54/ezpublish/EzPublishKernel.php app/AppKernel.php|less
# install legacy bridge
Reference : https://github.com/ezsystems/LegacyBridge/blob/v2.1.1/INSTALL.md
docker-compose exec --user www-data app bash
COMPOSER_HOME="/tmp/.composer" COMPOSER_MEMORY_LIMIT=-1 composer require --update-with-all-dependencies "ezsystems/legacy-bridge"
vi app/AppKernel.php
new eZ\Bundle\EzPublishLegacyBundle\EzPublishLegacyBundle( $this ),
php bin/console ezpublish:legacy:init
Re-enable "ez_publish_legacy" section in app/config/ezplatform.yml
Add legacy extensions if as needed
ezsystems/ezscriptmonitor-ls
ezsystems/ezsi-ls
ezsystems/ezfind-ls
ezsystems/eztags-ls
#COMPOSER_HOME="/tmp/.composer" COMPOSER_MEMORY_LIMIT=-1 composer require --no-update "ezsystems/ezscriptmonitor-ls"
#COMPOSER_HOME="/tmp/.composer" COMPOSER_MEMORY_LIMIT=-1 composer require --no-update "ezsystems/ezsi-ls"
#COMPOSER_HOME="/tmp/.composer" COMPOSER_MEMORY_LIMIT=-1 composer require --no-update "ezsystems/ezfind-ls"
#COMPOSER_HOME="/tmp/.composer" COMPOSER_MEMORY_LIMIT=-1 composer require --no-update "ezsystems/eztags-ls"
Add legacy-bridge rewrite rules to doc/nginx/ez_params.d/ez_rewrite_params:
# Legacy Bridge:
rewrite "^/var/([^/]+/)?storage/images(-versioned)?/(.*)" "/var/$1storage/images$2/$3" break;
rewrite "^/var/([^/]+/)?cache/(texttoimage|public)/(.*)" "/var/$1cache/$2/$3" break;
rewrite "^/design/([^/]+)/(stylesheets|images|javascript|fonts)/(.*)" "/design/$1/$2/$3" break;
rewrite "^/share/icons/(.*)" "/share/icons/$1" break;
rewrite "^/extension/([^/]+)/design/([^/]+)/(stylesheets|flash|images|lib|javascripts?)/(.*)" "/extension/$1/design/$2/$3/$4" break;
rewrite "^/packages/styles/(.+)/(stylesheets|images|javascript)/([^/]+)/(.*)" "/packages/styles/$1/$2/$3/$4" break;
rewrite "^/packages/styles/(.+)/thumbnail/(.*)" "/packages/styles/$1/thumbnail/$2" break;
rewrite "^/var/storage/packages/(.*)" "/var/storage/packages/$1" break;
docker-compose stop web; docker-compose up -d
# Copy custom template/code from old installation to new:
copy design from ../malagaezp54/ezpublish_legacy/extension/ezdemo/design/ezdemo/
cp -a ../malagaezp54/ezpublish_legacy/design/ezdemo_site src/legacy_files/design/
copy site accesses and settings/override :
cp -a ../malagaezp54/ezpublish_legacy/settings/siteaccess/eng ../malagaezp54/ezpublish_legacy/settings/siteaccess/ezdemo_site ../malagaezp54/ezpublish_legacy/settings/siteaccess/ezdemo_site_admin src/legacy_files/settings/siteaccess/
cp ../malagaezp54/ezpublish_legacy/settings/override/* src/legacy_files/settings/override/
copy vardir
mkdir -p ezpublish_legacy/var/ezdemo_site && cp -a ../malagaezp54/ezpublish_legacy/var/ezdemo_site/storage ezpublish_legacy/var/ezdemo_site
Make symlinks from src/legacy_files to ezpublish_legacy/settings/[...]
bin/console ezpublish:legacy:symlink -c
# Genereate extension autoloads, create symlinks in var/ to legacy etc..
composer legacy-scripts
Install toolkit for easy db upgrade:
mkdir external && cd external && git clone https://github.com/vidarl/ezp-toolkit && cd ezp-toolkit && git checkout database_scripts && cd ../..
# Upgrade database
Copy db dump from old installation
cp ../malagaezp54/ezp54_demo.sql .
Remove all existing tables if you like:
./external/ezp-toolkit/database/delete_tables.sh ezp SetYourOwnPassword ezp
Import database
time mysql -u ezp -pSetYourOwnPassword ezp -h db < ezp54_demo.sql
Upgrade db
time ./external/ezp-toolkit/database/upgrade_db.sh local
Change characterset to Charset=utf8mb4 in legacy
ezpublish_legacy/settings/override/site.ini.append.php
[DatabaseSettings]
Charset=utf8mb4
Clear cache
rm -Rf var/cache/*/* ezpublish_legacy/var/cache ezpublish_legacy/var/ezdemo_site/cache
# Define image aliases for Symfony stack
cp ../ezplatform.yml_complete app/config/ezplatform.yml
rm -Rf var/cache/*/* ezpublish_legacy/var/cache ezpublish_legacy/var/ezdemo_site/cache
eZXMlText -> Richtext
https://doc.ezplatform.com/en/2.5/migrating/migrating_from_ez_publish_platform/#321-migrate-xmltext-content-to-richtext
php -d memory_limit=1536M bin/console ezxmltext:convert-to-richtext --dry-run --export-dir=ezxmltext-export --export-dir-filter=notice,warning,error --concurrency 4 -v
php -d memory_limit=1536M bin/console ezxmltext:import-xml --dry-run --export-dir=ezxmltext-export --content-object=128 -v
php -d memory_limit=1536M bin/console ezxmltext:import-xml --export-dir=ezxmltext-export --content-object=128 -v
php -d memory_limit=1536M bin/console ezxmltext:convert-to-richtext --export-dir=ezxmltext-export --export-dir-filter=notice,warning,error --concurrency 4 -v
rm -Rf var/cache/*/* ezpublish_legacy/var/cache ezpublish_legacy/var/ezdemo_site/cache
#################### ezplatform.yml_step1 ###############
ezpublish:
# HttpCache settings, By default 'local' (Symfony HttpCache Proxy), by setting it to 'http' you can point it to Varnish
# You may also set it to 'fastly' if you want to use the fastly CDN
http_cache:
purge_type: '%purge_type%'
# Repositories configuration, setup default repository to support solr if enabled
repositories:
default:
storage: ~
search:
engine: '%search_engine%'
connection: default
# Siteaccess configuration, with one siteaccess per default
siteaccess:
list: [site, admin, ezdemo_site, eng, ezdemo_site_admin]
groups:
site_group: [site]
ezdemo_site_group: [ezdemo_site, eng, ezdemo_site_admin]
# WARNING: Do not remove or rename this group.
# It's used to distinguish common siteaccesses from admin ones.
# In case of multisite with multiple admin panels, remember to add any additional admin siteaccess to this group.
admin_group: [admin, ezdemo_site_admin]
default_siteaccess: ezdemo_site
match:
URIElement: 1
# System settings, read in following order: `default`, <siteaccess-group>, <siteacces>, and `global`
# TIP: For multisite installations organize shared config into SiteAccess groups,
# on single-site you can place shared config under "default" for simplicity as shown below.
system:
default:
# Cache pool service, needs to be different per repository (database) on multi repository install.
cache_service_name: '%cache_pool%'
# These reflect the current installers, complete installation before you change them. For changing var_dir
# it is recommended to install clean, then change setting before you start adding binary content, otherwise you'll
# need to manually modify your database data to reflect this to avoid exceptions.
var_dir: var/ezdemo_site
content:
# As we by default enable EzSystemsPlatformHttpCacheBundle which is designed to expire all affected cache
# on changes, and as error / redirects now have separate ttl, we easier allow ttl to be greatly increased
default_ttl: '%httpcache_default_ttl%'
# HttpCache purge server(s) setting, eg Varnish, for when ezpublish.http_cache.purge_type is set to 'http'.
http_cache:
# If using fastly, 'purge_server' must be set to 'https://api.fastly.com'
purge_servers: ['%purge_server%']
varnish_invalidate_token: '%varnish_invalidate_token%'
fastly:
service_id: '%fastly_service_id%'
key: '%fastly_key%'
#site_group:
# design: main
ezdemo_site_group:
languages: [eng-GB]
# eng:
# session:
# name: eZSESSID
# ezdemo_site_admin: { }
# ezdemo_site:
# session:
# name: eZSESSID
admin_group:
# System languages. Note that by default, content, content types, and other data are in eng-GB locale,
# so removing eng-GB from this list may lead to errors or content not being shown, unless you change
# all eng-GB data to other locales first.
# For admin this needs to contain all languages you want to translate content to on the given repository.
languages: [eng-GB]
page_builder:
siteaccess_list: [site]
content_tree_module:
contextual_tree_root_location_ids:
- 2 # Home (Content structure)
- 5 # Users
- 43 # Media
- 48 # Setup
- 55 # Forms
subtree_paths:
content: /1/2/
media: /1/43/
site:
languages: [eng-GB]
url_alias:
slug_converter:
transformation: 'urlalias_lowercase'
imagemagick:
enabled: true
path: /usr/bin/convert
ez_platform_standard_design:
# makes Kernel default templates (in EzPublishCoreBundle/Resources/views) part of standard Design
override_kernel_templates: false
#ez_publish_legacy:
# enabled: true
# system:
# ezdemo_site_admin:
# legacy_mode: true
# ezdemo_site:
# legacy_mode: true
#################### ezplatform.yml_complete ###############
ezpublish:
# HttpCache settings, By default 'local' (Symfony HttpCache Proxy), by setting it to 'http' you can point it to Varnish
# You may also set it to 'fastly' if you want to use the fastly CDN
http_cache:
purge_type: '%purge_type%'
# Repositories configuration, setup default repository to support solr if enabled
repositories:
default:
storage: ~
search:
engine: '%search_engine%'
connection: default
# Siteaccess configuration, with one siteaccess per default
siteaccess:
list: [site, admin, ezdemo_site, eng, ezdemo_site_admin]
groups:
site_group: [site]
ezdemo_site_group: [ezdemo_site, eng, ezdemo_site_admin]
image_aliases_group: [ezdemo_site, eng, ezdemo_site_admin, admin]
# WARNING: Do not remove or rename this group.
# It's used to distinguish common siteaccesses from admin ones.
# In case of multisite with multiple admin panels, remember to add any additional admin siteaccess to this group.
admin_group: [admin, ezdemo_site_admin]
default_siteaccess: ezdemo_site
match:
URIElement: 1
# System settings, read in following order: `default`, <siteaccess-group>, <siteacces>, and `global`
# TIP: For multisite installations organize shared config into SiteAccess groups,
# on single-site you can place shared config under "default" for simplicity as shown below.
system:
default:
# Cache pool service, needs to be different per repository (database) on multi repository install.
cache_service_name: '%cache_pool%'
# These reflect the current installers, complete installation before you change them. For changing var_dir
# it is recommended to install clean, then change setting before you start adding binary content, otherwise you'll
# need to manually modify your database data to reflect this to avoid exceptions.
var_dir: var/ezdemo_site
content:
# As we by default enable EzSystemsPlatformHttpCacheBundle which is designed to expire all affected cache
# on changes, and as error / redirects now have separate ttl, we easier allow ttl to be greatly increased
default_ttl: '%httpcache_default_ttl%'
# HttpCache purge server(s) setting, eg Varnish, for when ezpublish.http_cache.purge_type is set to 'http'.
http_cache:
# If using fastly, 'purge_server' must be set to 'https://api.fastly.com'
purge_servers: ['%purge_server%']
varnish_invalidate_token: '%varnish_invalidate_token%'
fastly:
service_id: '%fastly_service_id%'
key: '%fastly_key%'
image_aliases_group:
image_variations:
articleimage:
reference: null
filters:
- { name: geometry/scalewidth, params: [770] }
articlethumbnail:
reference: null
filters:
- { name: geometry/scaledownonly, params: [170, 220] }
backgroundimage:
reference: original
filters:
- { name: geometry/scaledownonly, params: [170, 350] }
billboard:
reference: null
filters:
- { name: geometry/scalewidth, params: [764] }
block2items1:
reference: null
filters:
- { name: geometry/scalewidth, params: [195] }
- { name: geometry/crop, params: [195, 98, 0, 0] }
block2items2:
reference: null
filters:
- { name: geometry/scalewidth, params: [195] }
- { name: geometry/crop, params: [195, 98, 0, 0] }
blockgallery1:
reference: null
filters:
- { name: geometry/scalewidth, params: [195] }
- { name: geometry/crop, params: [195, 98, 0, 0] }
campaign:
reference: null
filters:
- { name: geometry/scalewidth, params: [770] }
- { name: geometry/crop, params: [770, 390, 0, 0] }
contentgrid:
reference: original
filters:
- { name: geometry/scalewidthdownonly, params: [370] }
- { name: geometry/crop, params: [370, 160, 0, 0] }
ezplatform_admin_ui_profile_picture_user_menu:
reference: reference
filters:
- { name: geometry/scaledownonly, params: [30, 30] }
- { name: geometry/crop, params: [30, 30, 0, 0] }
gallery:
reference: original
filters:
- { name: geometry/scalewidthdownonly, params: [770] }
galleryline:
reference: null
filters:
- { name: geometry/scaledownonly, params: [70, 150] }
gallerythumbnail:
reference: null
filters:
- { name: geometry/scaledownonly, params: [105, 100] }
highlighted:
reference: original
filters:
- { name: geometry/scalewidthdownonly, params: [300] }
- { name: geometry/crop, params: [300, 300, 0, 0] }
imagefull:
reference: original
filters:
- { name: geometry/scalewidthdownonly, params: [770] }
imagelarge:
reference: null
filters:
- { name: geometry/scaledownonly, params: [448, 622] }
infoboximage:
reference: null
filters:
- { name: geometry/scalewidth, params: [75] }
large:
reference: reference
filters:
- { name: geometry/scaledownonly, params: [300, 300] }
listitem:
reference: null
filters:
- { name: geometry/scaledownonly, params: [130, 190] }
logo:
reference: null
filters:
- { name: geometry/scaleheight, params: [36] }
mainstory1:
reference: null
filters:
- { name: geometry/scalewidth, params: [468] }
- { name: geometry/crop, params: [468, 396, 0, 0] }
mainstory2:
reference: null
filters:
- { name: geometry/scalewidth, params: [439] }
- { name: geometry/crop, params: [439, 233, 0, 0] }
mainstory3:
reference: null
filters:
- { name: geometry/scalewidth, params: [201] }
- { name: geometry/crop, params: [201, 239, 0, 0] }
medium:
reference: reference
filters:
- { name: geometry/scaledownonly, params: [200, 200] }
multiuploadthumbnail:
reference: null
filters:
- { name: geometry/scaledownonly, params: [100, 80] }
productimage:
reference: null
filters:
- { name: geometry/scaledownwidthonly, params: [770] }
productthumbnail:
reference: null
filters:
- { name: geometry/scaledownonly, params: [170, 220] }
reference:
reference: null
filters:
- { name: geometry/scaledownonly, params: [600, 600] }
rss:
reference: null
filters:
- { name: geometry/scale, params: [88, 31] }
small:
reference: reference
filters:
- { name: geometry/scaledownonly, params: [100, 100] }
tiny:
reference: reference
filters:
- { name: geometry/scaledownonly, params: [30, 30] }
#site_group:
# design: main
ezdemo_site_group:
languages: [eng-GB]
# eng:
# session:
# name: eZSESSID
# ezdemo_site_admin: { }
# ezdemo_site:
# session:
# name: eZSESSID
admin_group:
# System languages. Note that by default, content, content types, and other data are in eng-GB locale,
# so removing eng-GB from this list may lead to errors or content not being shown, unless you change
# all eng-GB data to other locales first.
# For admin this needs to contain all languages you want to translate content to on the given repository.
languages: [eng-GB]
page_builder:
siteaccess_list: [site]
form_builder:
forms_location_id: 131
content_tree_module:
contextual_tree_root_location_ids:
- 2 # Home (Content structure)
- 5 # Users
- 43 # Media
- 48 # Setup
- 55 # Forms
subtree_paths:
content: /1/2/
media: /1/43/
site:
languages: [eng-GB]
url_alias:
slug_converter:
transformation: 'urlalias_lowercase'
imagemagick:
enabled: true
path: /usr/bin/convert
ez_platform_standard_design:
# makes Kernel default templates (in EzPublishCoreBundle/Resources/views) part of standard Design
override_kernel_templates: false
ez_publish_legacy:
enabled: true
system:
ezdemo_site_admin:
legacy_mode: true
ezdemo_site:
legacy_mode: true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment