Skip to content

Requirements

Roadiz is a Symfony application running on PHP. You can follow regular Symfony requirements to optimize your local or production setup, which includes:

  • Web Server: Nginx or Apache with a dedicated virtual host (as described below).
  • PHP Version: PHP 8.2+
  • PHP Extensions: JSON, Intl, cURL, MBString, Ctype, iconv, PCRE, Session, Zip, SimpleXML, and Tokenizer (usually installed by default).
  • PHP Configuration: Ensure php.ini has the following settings:
    • short_open_tag = Off
    • magic_quotes_gpc = Off
    • register_globals = Off
    • session.auto_start = Off
  • Database: MariaDB 10.11+ or MySQL 8.0+ with JSON_* functions support.
  • Other Tools: Composer for dependencies management, Git for versionning.
  • If your local environnement has ffmpeg installed, Roadiz can use it to generate video thumbnails.

Development workflow

Roadiz is not meant to be deployed directly to a production server out-of-the-box. It is a Symfony application that must be configured and customized in a development environment before committing your own project repository configuration and migrations. Deployment methods include SFTP, SSH, Git, or Docker. Like any Symfony app, you need to clear cache, run migrations, and perform other tasks when deploying to a new environment, which may require a Shell access or building a Docker image with a custom entrypoint script.

Using Docker for Development and Production

Roadiz and Symfony heavily rely on Docker and Docker Compose to ease-up development and deployment, especially using tools like GitLab or GitHub Actions. We recommend creating Docker images containing all your project sources and dependencies.

The Roadiz Skeleton project includes a multi-stage Dockerfile with PHP, Nginx, and Varnish. Feel free to customize it to suit your project needs. You can use docker-bake.hcl in your CI pipeline to build all project Docker images at once.

docker compose is recommended for use on the host machine, particularly for Windows and macOS users. However, Docker is not mandatory—you can install PHP and a web server directly on your host by following the official Symfony setup instructions.

One Container per Process

Since Roadiz v2.1, we recommend separating processes into different Docker containers, allowing independent scaling. For example:

  • Multiple PHP-FPM containers can run your application.
  • A single Nginx container can serve static assets.
  • A single Redis container can handle caching.

This setup enables more efficient resource allocation and scalability.