Skip to main content
Version: 2024.1

Installation of Portal Engine

The installation of the Portal Engine follows standard composer procedures. There are a couple of things to consider though.

Prerequisites

System Requirements

Before installing the Portal Engine, please be aware of the following requirements:

  • PHP >= 8.1
  • Pimcore >= 11.2
  • OpenSearch 2
  • Mercure (optional for Pimcore Direct Edit)
  • MySQL/MariaDB innodb_default_row_format option needs to be set to "DYNAMIC" (which is the default value)

Required Bundles

The Portal Engine requires a couple of bundles which need to be configured and installed first:

Installation

As soon as all prerequisites are met, installation follows standard composer and Pimcore procedure, depending on the version you're working with:

Follow the three steps below:

  1. Install the required dependencies:
composer require pimcore/portal-engine
  1. Make sure the bundle is enabled in the config/bundles.php file. The following lines should be added:
use Pimcore\Bundle\PortalEngineBundle\PimcorePortalEngineBundle;
// ...

return [
// ...
// make sure required bundles are added before to that list
// ...
PimcorePortalEngineBundle::class => ['all' => true],
// ...
];
  1. Install the bundle:
bin/console pimcore:bundle:install PimcorePortalEngineBundle

Setup Data Index

OpenSearch index configuration and setup is handled by the Pimcore Generic Data Index Bundle

For further information please have a look at this bundle.

By default, all data sources and trackers for statistics tracking based on Statistics Explorer also use the OpenSearch client defined by the generic data index bundle. To change that, please overwrite the service definitions for the corresponding trackers and datasource.

Configure Symfony firewall

To configure the Symfony firewall for the portals, add following line to your firewalls configuration in the security.yml of your app after the pimcore_admin firewall.

security:
firewalls:
pimcore_admin:
# ...
portal_engine: '%pimcore_portal_engine.firewall_settings%'

Of course, it is also possible to customize the firewall settings for the portals by defining your custom settings instead of using the provided parameter. But, this is not recommended and might break in future versions of the Portal Engine (because Portal Engine does changes at the firewall configuration)!

IMPORTANT If you need to exclude certain routes from the firewall and make them accessible without Portal Engine login (like for example for the open id connect integration for Pimcore backend), you can specify these routes in following configuration.

 pimcore_portal_engine:
custom_public_routes:
- pimcore_openidconnect_buttoninjection_script

Deployment hint:

For deployments of applications with this bundle via deployment pipelines without actual database access, the Symfony cache warming process could fail as doctrine ORM tries to determine the database version on cache warm-up to build its cache. Therefore, it is recommended to configure the database server version in the default DBAL connection like this:

doctrine:
dbal:
default_connection: default
connections:
default:
...
server_version: mariadb-10.11.0

Follow-up Configuration

Portal Engine needs the following commands up and running permanently or regularly.

(optional) Multi-Node setup

When setting up the Portal Engine in a multi node setup, please first follow Pimcore instructions for multi-node setup and shared storages.

In addition to the Pimcore instructions also consider /var/tmp/portal-engine/downloads which needs to be a shared tmp folder and can be configured via flysystem configuration:

flysystem:
storages:
pimcore.portalEngine.download.storage:
adapter: 'local'
visibility: private
options:
directory: '%kernel.project_dir%/var/tmp/portal-engine/downloads'
Style Settings Feature

If you are using the style settings feature the location public/var/portal-engine needs to be shared along the nodes.

It contains some configuration files for webpack setup and customized frontend builds for portals that are using the style settings feature.