Site packages and installers
This page is for developers who want a site that can be installed again: on a colleague's machine, on staging, for the next customer. Exponential installs sites from packages, and a project can use the same mechanism for its own classes and starter content, so a new installation is built from files instead of clicks.
Contents
- Packages in one paragraph
- The three installers
- The default site package
- Packages in your project
- A site package of your own
- Testing
- What packages do not carry
Packages in one paragraph
A package is a folder with a package.xml and the files it names, shipped as one .ezpkg archive. Types include
contentclass, contentobject, extension, sitestyle and site. A site package (type site) requires other
packages and can carry install scripts that set up siteaccesses, extensions, roles and preferences. Installations find
packages on a package server (settings/package.ini [RepositorySettings] RemotePackagesIndexURL) and keep downloaded
ones in var/storage/packages/ (Site packages: start here,
Package types).
The three installers
| Installer | Use it for |
|---|---|
./console exp:install --apply | development and scripted installs; SQLite and sevenx_multisite by default (The console install) |
The kickstarter (bin/php/kickstarter.php, kickstart.ini) | unattended installs driven by a settings file (Kickstarter) |
| The setup wizard in the browser | installs on hosting without a shell (Setup wizard) |
All three read the same packages (How the kickstarter and console use packages).
The default site package
sevenx_multisite is the default of Exponential 6.0.15. It creates the classes, demo content for two sites, the
siteaccesses (public sites, languages, admin, editor), roles, and the layouts of Exponential Layouts from the
theme extension's data (sevenx_multisite,
What you have after installing). Studying it is
the fastest way to see a complete, production-style setup. Start a project from it, remove what you do not need, and
reuse its classes where they fit (The sevenx classes).
Packages in your project
Even without a site package, put the database-side parts of your project into packages in your repository:
| Part | Package | How |
|---|---|---|
| Your classes | contentclass | Setup > Packages > Create new package > content class export, or ezpm.php |
| Starter content (folders, a front page, demo items) | contentobject | content object export |
| Your extension, for others | extension | extension export, or Composer (Packages (.ezpkg)) |
ezpm.php builds packages from a shell, so the same command runs for every release
(Creating packages with ezpm); the wizard is described in
The package wizard.
A site package of your own
A site package of your own pays off when you install the same kind of site many times (an agency's starter, a franchise, training labs) or must rebuild an installation exactly. The path: fork an existing site package, change its classes, content and installer script, rebuild the archives, version them, publish them on a package server, and point installations at it (Making your own site package). The documentation requirements a published package must meet are in The requirements checklist, and a package useful to others can be contributed to the shared server (Contribute your site package).
Testing
Test a package where nothing can be lost: a separate checkout with its own SQLite database, a dry run, a full install, a look at the result, then remove the sandbox (Testing in a sandbox). Never run an installer against a database that holds anything you care about; the console install empties the database it is given.
What packages do not carry
- Layouts. Layouts and their rules travel with
exp:layouts exportandimport, or in a theme extension's data files (Layouts for CMS developers, Layouts data and share DBA). - Machine settings.
settings/override/is written per machine. - Your code. Extensions come from Composer or Git, not from content packages.
Related pages
- Packages: the administrator's guide
- Site packages glossary
- Multisite and packages course
- 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.