Installing and running Exponential 6.0: the book
This book takes you from an empty server to a production Exponential 6.0 site. It covers checking the requirements, getting the code, choosing and running an installer, serving the site, choosing a database, and keeping the site healthy afterwards, through to upgrades, troubleshooting and hardening. Each chapter stands on its own and ends with references to the supporting documentation in this repository and to the official sources outside it.
Warning
.htaccess slows down every request. When .htaccess files are enabled (AllowOverride anything but None), let alone
used, Apache looks for them and reads and evaluates them on every request, in every directory of the path, and
page loading times go up drastically (measured). The only real fix is to switch the feature off for
the virtual host: AllowOverride None in the HTTPS virtual host, and the rules in the virtual host's own
configuration as mod_rewrite rules. That is far faster in production speed tests and well worth the time it takes
to optimize a production configuration. Switch over right away: copy the rules of the
example HTTPS virtual host into your virtual host (with the static cache, also
staticcache_offload.conf), set AllowOverride None, run apachectl configtest, reload Apache and
test the site. The same rules for other servers: nginx, LiteSpeed,
Caddy, IIS, Velocity (built in); where virtual host rules go in a control
panel: Plesk, cPanel, DirectAdmin, ISPConfig.
On LiteSpeed or OpenLiteSpeed, the server's own page cache can also answer anonymous visitors and crawlers without PHP: Page caching with LiteSpeed and OpenLiteSpeed.
In a hurry? The short installation guide has the quick start and links back into the chapters here.
Contents
Part I: Before you install
| Chapter | What it covers |
|---|---|
| 1. Introduction: what you are installing | The kernel, extensions, siteaccesses (site, admin, editor) and designs; the three install methods; conventions and glossary |
| 2. Requirements | PHP 8.0 to 8.5 (PHP 7.4 usable without support), every extension and why, the php.ini settings the setup checks, databases, Composer, web server, operating systems, sizing; the overviews Database support and Operating system support |
| 3. Getting the code | Versions and tags, Git clones with history (recommended), composer create-project, installing on PHP 8.0 to 8.3, the Velocity package (required as of 6.0.15), extensions as packages, a tour of the installation root |
Part II: Installing
| Chapter | What it covers |
|---|---|
| 4. Choosing an install method | One installer with three front ends, site packages, what an installation writes, unattended installs in CI and containers |
| 5. The setup wizard | The browser installer page by page: every field, its checks and what it writes; restarting a wizard that stopped |
| 6. The kickstarter | Unattended installs from kickstart.ini: commands, the full settings reference, DatabaseAction, annotated examples, dry runs, re-running |
7. The console install: exp:install | One command with options instead of a settings file: every option, dry run, exit status, examples per database |
Part III: Running the site
| Chapter | What it covers |
|---|---|
| 8. Serving the site | Exponential Velocity, part of Exponential as of 6.0.15 and installed with it, which serves HTTP and HTTPS itself with no separate web server; FrankenPHP; Apache and nginx with PHP-FPM; permissions; reverse proxies |
| 9. Databases | The supported databases in their official order (SQLite 3, the default; PostgreSQL; MongoDB; MariaDB; Oracle; MySQL): SQLite 3 as a production database under heavy load (WAL, queued writes, caching, scaling, backups), each server engine, a comparison, switching engines, and Microsoft SQL Server |
| 10. After installing: the operations handbook | First login, siteaccesses, cron, mail, notifications and newsletters, caches, autoloads, backups, logs, monitoring, performance, extensions |
Part IV: Keeping it running
| Chapter | What it covers |
|---|---|
| 11. Upgrading | Which version you run, the update files, the paths from 3.x, 4.x and 5.x, and from any 6.0.x to today |
| 12. Troubleshooting | Symptom, cause and fix for every stage: Composer, the wizard, the kickstarter, run time, databases, Velocity, caches, signing in |
| 13. Security hardening for production | What the server must never hand out, secrets, debug output, the admin siteaccess, passwords and sessions, form tokens, headers and HTTPS, the audit log |
Part V: Migrating to, within and away from Exponential
Start at the migration hub: a verified table of every Exponential product and its versions, a decision guide, and one guide per path, within the Exponential family (Platform Legacy, Nexus, DXP, Exponential Platform, Exponential Basic, older releases) and from or to other systems (WordPress, Drupal, Joomla, Magento, Shopify, Contentful, Adobe Experience Manager, Wix, Squarespace, GoDaddy, static sites, JavaScript, Symfony and ColdFusion applications), with the common checklist, the import and export tools and the content mapping.
The chapters below name the old products (eZ Publish, eZ Platform, Ibexa) only to identify the system you migrate from. Each one goes through the vendor's own migration pages point by point and says where Exponential differs.
| Chapter | What it covers |
|---|---|
| 14. Migrating from the 4.x line | eZ Publish 3.10 and 4.0 to 4.7 on PHP 5: taking stock, the database step by step, files and cluster, settings, designs, porting extensions to PHP 8, passwords, search, verification, common issues, rollback |
| 15. Migrating from the 5.x legacy stack | eZ Publish 5.x with the Symfony stack: which variant you run, extracting the legacy part, YAML to INI, field types against datatypes, image variations, Twig to TPL, REST, caches, common issues |
| 16. Migrating from eZ Platform and Ibexa | eZ Platform 1.x to 3.x and Ibexa DXP/OSS to Exponential Platform Nexus (the like-for-like Symfony path) or to the Exponential legacy kernel, with a decision table |
| 17. Migration reference | Lookup tables: every kernel table, datatypes and field types, INI and YAML settings, TPL and Twig, the PHP API, password hashes, URL aliases and image paths, data checks, tooling, glossary |
Which chapters do I need?
| Your situation | Read |
|---|---|
| A first test install on a laptop | Short guide, then chapters 3 and 7 |
| A production site on one server, no separate web server | Chapters 2, 3, 5 or 6, 8 (Velocity), 9 (SQLite), 10, 13 |
| A production site behind Apache or nginx with MySQL or PostgreSQL | Chapters 2, 3, 5 or 6, 8, 9, 10, 13 |
| Unattended installs in CI or containers | Chapters 4, 6, 7 |
| Upgrading an existing site | Chapters 11, 12 |
| Moving a site from eZ Publish 3.x or 4.x | Chapters 14, 17, then 11 for the update chain |
| Moving a site from eZ Publish 5.x | Chapters 15, 17 |
| Moving a site from eZ Platform or Ibexa | Chapters 16, 17 |
| Moving between Exponential products, from another CMS or site builder, or away from Exponential | The migration hub |
Putting .htaccess and config.php into place, changing a config.php setting | Setting up .htaccess and config.php from the console, chapters 3 and 8 |
| Something does not work | Chapter 12 |
Other documentation
- Getting started, Operating a site and Upgrading: the task guides.
- Backwards compatibility notes for 6.0: what changed and what a site has to do about it, per topic.
- Changelogs: what each 6.0.x release changed.
- The project README: an overview of Exponential and its features.
Public demos
Installing a public demo, whose administrator sign-in is published? Set the environment variable EXP_DEMO_MODE=1 for the installation and for every PHP process of the demo afterwards: the installers then accept the published password (publish, publishing), and administrator passwords cannot be changed or reset. Chapters 5, 6, 7 and 13 have a note each; the whole story is Demo mode, the setup on a server Recipe: run a public demo on LiteSpeed and Plesk.
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.