Various scripts for help running and upgrading ezpublish to ezplatform
Using legacy apache docker
You may want to run legacy directly from ezpublish_legacy/ folder. To do that:
Add :external/ezp-toolkit/docker/legacy-apache.yml
to the end of the COMPOSE_FILE variable in .env
Add the following to .dockerignore
file:
dumps/
ezpublish_legacy/var/ezflow_site/storage/
vendor/
ezpublish_legacy/
ezpublish_legacy.composer/
node_modules/
vendor.old/
If you only want to run pure legacy, you need a container where you may run composer install:
docker run -d --name [proj]_console -v /var/www/[folder]:/app -v /home/vl/.ssh/id_rsa:/id_rsa ezsystems/legacy-apache bash -c "while [ 1 ]; do echo -n .; sleep 60; done"
git clone [email protected]:ezsystems/ezpublish-platform.git
cd ezpublish-platform
git checkout v5.4.14
mkdir external
cd external
git clone [email protected]:vidarl/ezp-toolkit.git
cd ..
cp external/ezp-toolkit/docker-ezpublishplatform/.dockerignore .
cp external/ezp-toolkit/docker-ezpublishplatform/.env-dist .env
# set COMPOSE_PROJECT_NAME in .env
# Also make note that you may change COMPOSE_FILE depending on if want xdebug etc
vim .env
docker-compose up -d
Add auth.json
to installation directory with credentials for updates.ez.no, next run:
docker-compose exec -u www-data ezphp5 bash
# Now, inside the container run:
COMPOSER_HOME="/tmp/.composer" COMPOSER_MEMORY_LIMIT=-1 composer install
Run setup wizard directly from legacy ( using legacyphpapache container on port 8082) http://localhost:8082
Use the following db settings when asked by setup wizard:
servername=db
username=ezp
password=youmaychangethis
Run following program from console
docker-compose exec -u www-data ezphp5 bash
php ezpublish/console ezpublish:configure --env prod ezdemo_site ezdemo_site_admin
Access site directly from legacy, PHP 5.6 on port 8082 Access site using symfony stack, PHP 5.6 on port 8081 Access site using symfony stack, PHP 7.1 on port 8080
Enabling xdebug by including :external/ezp-toolkit/docker-ezpublishplatform/xdebug.yml
in COMPOSE_FILE
variable in .env
Specify your computer's IP in DOCKERHOST
in .env
Install a browser Debugging extension, for instance XDebug Helper.
How to configure xdebug in PHPStorm is documented here.
Specifically, it is important that you configure the Directory mapping correctly in PHPStorm, as the path to the .php files inside the container (seen by xdebug) is likely different from the path PHPStorm sees.
Let's say you have installed eZ Publish Platform in /home/phpdeveleoper/project/ezpsite
.
To configure the directory mapping, press [Ctrl]-[Alt]-[s]. Next click Languages & Frameworks
-> PHP
-> Servers
File/Directory : /home/phpdeveleoper/project/ezpsite
Absolute path on the server : /var/www
Note : This chapter is about how to enabled debugging in eZ Platform, not eZ Publish Platform
In .env
, add following variable (substitute 192.168.0.1
with your real IP)
# Insert the IP your computer here. xdebug inside the container will try to reach phpstorm using this IP
DOCKERHOST=192.168.0.1
Also, in .env
, add :external/ezp-toolkit/ezplatform/xdebug.yml
to COMPOSE_FILE
variable
Get some more tools in the app container
docker-compose exec app bash
apt-get update; apt-get install -y vim less openssh-client procps mysql-client
Remove all cache if you use legacy bridge ( PS : your var_dir in legacy might be called ezflow_site or someting similar) :
rm -Rf ezpublish_legacy/var/cache/* ezpublish_legacy/var/ezdemo_site/cache/* var/cache/*/*
# copy settings/override and settings/siteaccess to src/legacy_files/settings/
# Generate autoloads
cd ezpublish_legacy
php bin/php/ezpgenerateautoloads.php -e
# Run composer scripts once or twice :
composer symfony-scripts
composer symfony-scripts
# FYI : The above comands with among other things run (which makes symlinks from src/ to ezpublish_legacy/...:
# php bin/console ezpublish:legacy:symlink
# If you have custom extensions in src/AppBundle/ezpublish_legacy/, symlink them using:
# php bin/console ezpublish:legacybundles:install_extensions
# Or run the following script (which will do all of this in one go)
composer legacy-scripts
Add the rewrite rules to doc/nginx/ez_params.d/ez_rewrite_params
:
(...)
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;
rewrite "^(.*)$" "/app.php$1" last;
And restart web container
docker-compose stop web; docker-compose up -d
git clone https://github.com/ezsystems/ezplatform-ee.git ezp25lb
cd ezp25lb
git checkout v2.5.31
git checkout -b v2.5.31_branch
git clone https://github.com/ezsystems/ezplatform-ee-demo.git ezp25lb
cd ezp25lb
git checkout v2.5.14
git checkout -b v2.5.14_branch
vi .env
-PHP_IMAGE=ezsystems/php:7.4-v2-node10
+PHP_IMAGE=ezsystems/php:7.3-v2-node10
COMPOSE_PROJECT_NAME=ezp25lb
docker-compose up -d --remove-orphans
docker-compose exec app bash
export COMPOSER_HOME=/tmp/kake
composer self-update 2.2.10
( see https://github.com/composer/composer/issues/10671 for details )
# next step not needed with composer 2.2.10
vi composer.json
"repositories": [
{
"type": "composer",
- "url": "https://updates.ez.no/ttl"
+ "url": "https://updates.ez.no/ttl",
+ "canonical": false
}
],
( See https://getcomposer.org/doc/articles/repository-priorities.md for details )
cp ~/.composer/auth.json .
docker-compose exec --user www-data app bash
export COMPOSER_HOME=/tmp/.composer
composer require ezsystems/legacy-bridge:^2.1 -W --no-scripts
git clone [email protected]:vidarl/ezp-toolkit.git external/ezp-toolkit
vi .env
-COMPOSE_FILE=doc/docker/base-dev.yml
+COMPOSE_FILE=doc/docker/base-dev.yml:external/ezp-toolkit/ezplatform/apache-legacy.yml
vi .dockerignore
dumps/
ezpublish_legacy/var/ezflow_site/storage/
vendor/
ezpublish_legacy/
ezpublish_legacy.composer/
node_modules/
vendor.old/
docker-compose up -d --remove-orphans
Access http://localhost:8079
Add in app/AppKernel.php
:
new AppBundle\AppBundle(),
+new eZ\Bundle\EzPublishLegacyBundle\EzPublishLegacyBundle( $this ),
Execute legacy bridge init script:
php bin/console ezpublish:legacy:init
Do as instructed by ezpublish:legacy:init
command:
composer symfony-scripts
git add src/legacy_files
More information is available at https://github.com/ezsystems/LegacyBridge/blob/master/INSTALL.md
- Remove
$mysqlcmd < vendor/ezsystems/ezpublish-kernel/data/update/mysql/dbupdate-7.2.0-to-7.3.0.sql
fromexternal/ezp-toolkit/database/upgrade_db.sh
- Copy
external/ezp-toolkit/database/legacy25_to_symfony25.sql.dist
toexternal/ezp-toolkit/database/legacy25_to_symfony25.sql
- Add this snippet to `app/config/ezplatform.yml``:
ez_publish_legacy:
# clear_all_spi_cache_on_symfony_clear_cache: false
# clear_all_spi_cache_from_legacy: false
system:
# site_admin:
# admin:
# legacy_mode: true
ezdemo_site:
legacy_mode: true
ezdemo_site_admin:
legacy_mode: true
- Add
eng
,ezdemo_site
andezdemo_site_admin
to the siteaccess list inapp/config/ezplatform.yml
- Set
eng
as default siteaccess inapp/config/ezplatform.yml
- Add the following config if you have ezflow blocks (
ezpage
field type), and want to admin-ui to work:ezpublish: system: global: ezpage: layouts: GlobalZoneLayout: name: Global zone layout template: globalzonelayout.tpl 2ZonesLayout1: name: 2 zones (layout 1) template: 2zoneslayout1.tpl 2ZonesLayout2: name: 2 zones (layout 2) template: 2zoneslayout2.tpl 2ZonesLayout3: name: 2 zones (layout 3) template: 2zoneslayout3.tpl 3ZonesLayout1: name: 3 zones (layout 1) template: 3zoneslayout1.tpl 3ZonesLayout2: name: 3 zones (layout 2) template: 3zoneslayout2.tpl CallForActionLayout: name: Call For Action zone layout template: callforactionlayout.tpl
- See
vendor/ezsystems/ezpublish-kernel/eZ/Bundle/EzPublishCoreBundle/Resources/config/default_settings.yml
andvendor/ezsystems/ezpublish-kernel/eZ/Bundle/EzPublishCoreBundle/DependencyInjection/Configuration/Parser/Page.php
for more info.
- See
mv ezpublish_legacy/settings/siteaccess/ezdemo_site* ezpublish_legacy/settings/siteaccess/eng src/legacy_files/settings/siteaccess
php bin/console ezpublish:legacy:symlink
- Add the following code above the last line in
./doc/nginx/ez_params.d/ez_rewrite_params
# LB 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 --remove-orphans`
# Install Ibexa DXP 3.3 and later in docker containers
This repo contains a helper script for running Ibexa DXP in docker containers.
## Usage
- First clone this repo ( for instance in the subdirectory ezp-toolkit/ )
- Make sure you have a `~/.composer/auth.json` which have credentials to updates.ibexa.co
- Next, execute:
`./ezp-toolkit/ibexa/install_dxp.sh experience projectvtest vtest 3.3.21`
- `experience` is the flavour (content, experience, commerce)
- commerce not tested ATM
- `projectvtest` is the PROJECT_NAME used by docker-compose when naming the containers
- `vtest` is the target directory where the installation will be created
- '3.3.21' is the version you want to install
# Install Ibexa DXP 4.x on platform.sh
- Install Ibexa DXP locally
- Create a project on platform.sh
- Install the platform.sh config files
composer ibexa:setup --platformsh
- Find the project ID
platform projects
- Add the platform.sh git remote
platform project:set-remote
- Add your Ibexa credentionals to the platform.sh project
platform variable:create --level project --name env:COMPOSER_AUTH
--json true --visible-runtime false --sensitive true --visible-build true
--value '{ "http-basic": { "updates.ez.no": { "username": "...", "password": "..." }, "updates.ibexa.co": { "username": "...", "password": "..." } }, "github-oauth": { "github.com": "..." } }'
- Check which environments you have available:
platform environments -p
- Typically, at least have one project named `main` is available. On elder platform.sh projects, the environment may be called `master` or `production`
git push -u platform main
- Obtain the URL to the deployment
platform environment:url -e main