What hosting Exponential involves
This page is for product managers and system administrators at a hosting company who are about to offer Exponential hosting and want the whole picture first. It answers: what Exponential is from a server's point of view, which parts the host provides, what keeps running after the install, and how the work can be divided between host and customer. The details of each part are on the other pages of Hosting basics.
Contents
- Exponential from the server's point of view
- The parts a host provides
- What keeps running after the install
- How a site gets installed
- Dividing the work: options
- Checklist
- Related pages
Exponential from the server's point of view
Exponential is an open source content management system written in PHP and published under the GNU GPL
(composer.json: "license": "GPL-2.0-or-later"). It is maintained by 7x (Who is 7x?) and
continues a code base whose original product its creator discontinued after almost 18 years.
For a server, an installation is:
- Plain PHP files in one directory (the kernel,
lib/,extension/,design/,vendor/), with one front controller,index.php, that every page request goes through (chapter 3). - A database: one of six supported engines, SQLite 3 by default, which needs no database server at all (Databases in the official order).
- A writable run-time tree,
var/, holding caches, logs, uploaded files and image variations, and (with SQLite) the database file, plussettings/override/andsettings/siteaccess/with the installation's own settings. - Command line tools: the console
bin/php/console, the scripts inbin/php/, andruncronjobs.php, which runs the periodic jobs.
It has no compiled code of its own, so it runs wherever a supported PHP runs (Operating systems for hosts).
The parts a host provides
| Part | What Exponential needs | Page |
|---|---|---|
| PHP for the web | 8.0 or later (Velocity included), with the required extensions | PHP versions and extensions |
| PHP on the command line | the same version and extensions as the web PHP | PHP versions and extensions |
php.ini | the values the installer checks, sized for uploads and imports | PHP settings for Exponential |
| A web server | Exponential Velocity (recommended), or Apache, nginx or another server with PHP-FPM | Choosing a web server |
| A database | SQLite 3 needs only the sqlite3 extension; the others need a server and an account | Databases in the official order |
| Composer | to install and update the code and its extensions | Composer and Git on servers |
| Writable storage | var/ and settings/ writable by the site's user | Writable directories and permissions |
| Cron | runcronjobs.php at regular intervals | Cron jobs |
| a way to send: sendmail or SMTP | Mail delivery | |
| TLS | a certificate for each site address | TLS and HTTPS |
| Backups | the database and the files, kept off the machine | What to back up |
Note
A web server is not needed during a command-line install (the kickstarter or exp:install); the setup wizard needs
one, because it runs in the browser (chapter 2).
What keeps running after the install
An Exponential site is not finished when the installer ends. These keep running for the life of the site:
| What | Why | Where it is described |
|---|---|---|
| Cronjobs | notifications, search indexing with delayed indexing, link checks, cache and session cleanup | chapter 10, cronjobs |
| Velocity, if it serves the site | a long-running PHP server process with a pool of workers | Velocity for hosts |
| PHP-FPM, if Apache or nginx serves the site | one pool per site is usual | PHP-FPM tuning |
| A database server, unless SQLite is used | PostgreSQL, MongoDB, MariaDB, Oracle or MySQL | the page of each database |
| Logs | var/log/ and the web server's own logs grow and need rotation | Log viewer and rotation |
| Caches | var/cache/ grows and is cleared after changes | Cache clearing and warming |
The example crontab in chapter 10 runs the frequent part every
5 minutes, the default part every 15 minutes, infrequent hourly, and the cleanup parts once a night, all from the
crontab of the site user.
Warning
Hosting that forbids long-running processes cannot run Velocity; Apache or nginx with PHP-FPM serves the site there instead. Hosting without cron cannot run the periodic jobs, and notifications and delayed search indexing then never happen. Decide both before you design an offer.
How a site gets installed
Every install method runs the same installer steps; they differ only in where the answers come from (chapter 4):
| Method | Answers from | Fits |
|---|---|---|
| Setup wizard | forms in the browser | shared hosting without shell access |
| Kickstarter | a kickstart.ini file | repeatable installs, provisioning scripts |
Console install (exp:install) | command-line options | automation, containers, one-command installs |
All three run the same critical system tests first and stop with the cause and the fix when the machine is not ready.
For a hosting company the kickstarter and exp:install are the natural tools for automated provisioning; see
One-click installers and exp:install.
Dividing the work: options
The repository does not prescribe how a host and its customers share the work. These are the usual options; choose per plan, and write the choice into the plan's description.
| Task | Host does it | Customer does it |
|---|---|---|
| Operating system, PHP, web server, TLS | typical in every model | only on unmanaged servers |
| Database server and accounts | typical | on a server of the customer's own |
| Installing Exponential | as a provisioning option | with the setup wizard or the console |
| Updating Exponential and extensions | as a managed option (automated updates) | with Composer or the ezupdate extension |
| Cron | the host installs the crontab | the customer, where the panel allows it |
| Backups | typical, with restore tests | in addition, for their own copy |
| Content, templates, extensions of their own | rarely | typical |
Tip
Write down for each plan which of these rows belongs to whom. Most support questions about Exponential sites come from a row nobody thought was theirs: cron that was never installed, or a PHP upgrade that left the command line PHP behind the web PHP.
Checklist
- To do: PHP 8.0 or later (PHP 7.4 usable without support) for the web and the command line, the same version and extensions in both.
- To do:
sockets,pcntlandopensslin that PHP where Velocity is offered. - To do: A database offer chosen from the official order.
- To do:
var/andsettings/writable by the site's user; one user or one group for every process. - To do: Cron available to run
runcronjobs.php. - To do: Mail sending configured (sendmail or SMTP).
- To do: TLS for every site address.
- To do: Backups of the database and the files, with a tested restore.
- To do: The division of work written into each plan.
Related pages
- Hosting basics and Hosting companies: start here
- Requirements at a glance
- Choosing a hosting model
- Chapter 2: Requirements and chapter 10: After installing
- Choosing hosting, database and operating system
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
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.