Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion sites/platform/src/add-services/redis.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ for high-performance data retrieval and key-value storage.
{{% frameworks version="1" %}}

- [Drupal](../guides/drupal/redis.md)
- [Ibexa DXP](../guides/ibexa/deploy.md#cache-and-sessions)
- [Ibexa DXP](../guides/ibexa/deploy.md#redis)
- [Jakarta EE](../guides/jakarta/deploy.md#redis)
- [Micronaut](../guides/micronaut/redis.md)
- [Quarkus](../guides/quarkus/redis.md)
Expand Down
2 changes: 1 addition & 1 deletion sites/platform/src/add-services/solr.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Solr search with generic schemas provided, and a custom schema is also supported

{{% frameworks version="1" %}}

- [Ibexa DXP](../guides/ibexa/deploy.md#solr-specificity)
- [Ibexa DXP](../guides/ibexa/deploy.md#solr)
- [Jakarta EE](../guides/jakarta/deploy.md#apache-solr)
- [Spring](../guides/spring/solr.md)

Expand Down
157 changes: 7 additions & 150 deletions sites/platform/src/guides/ibexa/deploy.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,159 +5,16 @@ weight: -10
description: Learn how to use Ibexa DXP on {{% vendor/name %}}.
---

Ibexa DXP is a Composer-based PHP CMS, and as such fits well with the {{% vendor/name %}} model.
As a Symfony-based application its setup is very similar to Symfony.
Ibexa DXP is a digital experience platform with a focus on delivering effective content, offering personalized customer journeys, and facilitating multi-channel purchases and customer service.

Ibexa DXP has come pre-configured for use with {{% vendor/name %}} since its predecessor, eZ Platform 1.13.
Version 2.5 and later is recommended.
Those are the only versions that are supported.
Appropriate {{% vendor/name %}} configuration files are included in the Ibexa DXP application itself, but may be modified to suit your particular site, if needed.
Ibexa Cloud, based on Platform.sh, is the fastest solution to build and run Ibexa projects.

## Cache and sessions
See how to [install Ibexa DXP on Platform.sh through Ibexa Cloud](https://doc.ibexa.co/en/latest/getting_started/install_on_ibexa_cloud/).

By default, Ibexa DXP is configured to use a single Redis instance for both the application cache and session storage.
You may optionally choose to use a separate Redis instance for session storage in case you have a lot of authenticated traffic (and thus there would be many session records).
## Redis

To do so, uncomment the `redissession` entry in the `{{< vendor/configfile "services" >}}` file
and the corresponding relationship in the `{{< vendor/configfile "app" >}}` file.
The bridge code that is provided with eZ Platform 1.13 and later automatically detects the additional Redis service and use it for session storage.
See [how to enable additional services](https://doc.ibexa.co/en/latest/getting_started/install_on_ibexa_cloud/#additional-services)

On a {{% names/dedicated-gen-2 %}} instance, we strongly recommend using two separate Redis instances for Cache and Sessions.
The service and relationship names that ship with the default {{% vendor/name %}} configuration in Ibexa DXP should be used as-is.
To ensure the development environment works like Production, uncomment the `redissession` entry in the `{{< vendor/configfile "services" >}}` file and the corresponding relationship in the `{{< vendor/configfile "app" >}}` file.
The bridge code that's provided with eZ Platform 1.13 and later
automatically detects the additional Redis service and uses it for session storage.
## Solr

By default, on {{% names/dedicated-gen-2 %}} instances, both Cache and Session storage are in "persistent" mode,
so that data isn't lost in case of a system or process restart.
That reduces the potential for cache stampede issues or inadvertently logging people out.

## Modifying an existing Ibexa DXP project

If you have an existing Ibexa DXP project that was upgraded from a previous version, or want to resynchronize with the latest recommended configuration, see the [Ibexa DXP official repository](https://github.com/ezsystems/ezplatform).

In particular, see:

* The [`{{< vendor/configfile "app" >}}`](https://github.com/ezsystems/ezplatform/blob/master/.platform.app.yaml) file,
which automatically builds Ibexa DXP in development mode or production mode depending on your defined project-level variables.
* The [{{< vendor/configfile "app" >}}](https://github.com/ezsystems/ezplatform/tree/master/.platform) directory.

## Local Development with eZ Platform 2.x and later

For local development on top of a Docker stack,
the eZ community provides a tool called [eZ Launchpad](https://ezsystems.github.io/launchpad/)
It improves developer experience and reduces complexity for common actions by simplifying your interactions with Docker containers.
eZ Launchpad is ready to work with {{% vendor/name %}}.

It serves as a wrapper that allows you to run console commands from within the container without logging into it explicitly.
For example to run `bin/console` `cache:clear` inside the PHP container do:

```bash
~/ez sfrun cache:clear
```

Note that eZ Launchpad is supported by the community.
It might also require adjustments to make it work for Ibexa DXP V4.

### eZ Launchpad installation

eZ Launchpad's approach is to stay as decoupled as possible from your development machine and your remote hosting whether you are Linux or macOS.
To install run:

```bash
curl -fLSs https://ezsystems.github.io/launchpad/install_curl.bash | bash
```

Then you can start to use it to initialize your Ibexa DXP project on top Docker.

```bash
~/ez init
```

or create the Docker stack based on an existing project

```bash
git clone <PROJECT_NAME>.git application
cd application
~/ez create
```

Find more details on the [eZ Launchpad documentation](https://ezsystems.github.io/launchpad/).

Now, you have a working Ibexa DXP application with many services including Varnish, Solr, Redis, and more.

### Integration

To generate the key files for {{% vendor/name %}} (`{{< vendor/configfile "app" >}}` and `{{< vendor/configdir >}}`) run:

```bash
~/ez platformsh:setup
```

eZ Launchpad generates the files for you and you are then totally free to fine tune them.

#### Solr specificity

Solr is fully functional with eZ Launchpad but it isn't enabled by default on {{% vendor/name %}}.
You have to set it up manually following the [current documentation](https://github.com/ezsystems/ezplatform/blob/master/.platform/services.yaml#L37).

Actions needed are:

* Generate the Solr configuration thanks to the script provided by Ibexa.
* Put the result in the `{{< vendor/configdir >}}` at the root of your project.
* Add the service in the `{{< vendor/configfile "services" >}}`.
* Add the relationship in the `{{< vendor/configfile "app" >}}`.

#### Environment variables (optional)

eZ Launchpad allows you to define environment variables in the `provisioning/dev/docker-compose.yml` file.
You may use that to set [variables](../../development/variables/_index.md) to match {{% vendor/name %}} environments so that you can keep your environment behavior in sync.

Such variables have to be set in the `engine` container.

```yaml
# provisioning/dev/docker-compose.yml
engine:
environment:
- ASIMPLEVARIABLE=avalue
- PLATFORM_RELATIONSHIPS=A_BASE64_ENCODED_VALUE
```

### Local development with {{% vendor/name %}}

Thanks to eZ Launchpad, you can work 100% locally: [untethered](../../development/local/untethered.md).
You have the whole project working offline on machine.

{{< note >}}

{{% vendor/name %}} also provides smooth [tethered SSH tunnels](../../development/local/tethered.md).

{{< /note >}}

Local services are provided by the Docker stack but there are minimum day-to-day tasks that you might need with {{% vendor/name %}}.

The main ones are:

* **Downstream database synchronization**: Getting it from the remote to the local.
* **Downstream file storage synchronization**: Getting it from the remote to the local.

To help you with that, {{% vendor/name %}} provides a CLI that you can [install](../../administration/cli/_index.md).

#### Database and storage synchronization

```bash
{{% vendor/cli %}} db:dump --gzip -f ezplatform.sql.gz -d data/ -y
{{% vendor/cli %}} mount:download -m ezplatform/web/var --target=ezplatform/web/var/ -y
~/ez/importdata
```

The two first lines get the remote database and storage from the remote environment and stores it locally in `data/`.
The third tells to eZ Launchpad to import those data in the Docker stack.

{{< note >}}

The storage (images and files) synchronization is optional.
Ibexa DXP provides a [placeholder generator mechanism](https://doc.ibexa.co/en/latest/content_management/images/images/#generating-placeholder-images)
that allows you to forget about the real images for your local.

{{< /note >}}
See [how to enable additional services](https://doc.ibexa.co/en/latest/getting_started/install_on_ibexa_cloud/#additional-services)