Updating the CMS

The panel tells you about a new version itself: a badge in the «Marketplace» menu, a notice on the dashboard and on the Marketplace → Updates tab. Plugins and themes are updated with the «Update» button in the same place.

Core — with a button (since 3.7)

Marketplace → Updates → «Update the core to X.Y.Z». The site does everything itself:

  1. downloads the distribution and verifies its checksum and digital signature — a tampered archive is never installed;
  2. puts a backup of the replaced files into storage/backups/ (the last three are kept, with a «Roll back» button next to them);
  3. replaces core/, modules/, config/, bin/, docs/, public/assets/, index.php, admin.php and *.md;
  4. clears the template cache and opcache; database migrations run on the next request.

Left untouched: .env, storage/ (except backups), public/uploads/, your own plugins and themes.

If a list of reasons is shown instead of the button, updating from the panel is not possible on this hosting: usually the web server has no write access to core/, less often the zip extension is missing, PHP is too old or there is not enough disk space. Update manually in that case.

Core — manually (and to move to 3.7 from older versions)

  1. Backup: export the database, copy .env, storage/, public/uploads/.
  2. Download the archive of the new version: https://celena.io/downloads/celena-cms-3.7.0.zip
  3. Upload the files over the site: core/, modules/, config/, bin/, docs/, public/assets/, index.php, admin.php, .htaccess, *.md. Do not touch .env, storage/, public/uploads/, install.lock and your own plugins/themes. Do not copy install.php.
  4. Clear the cache: delete the files in storage/cache/ (find storage/cache -type f -delete).
  5. Open the site and the panel — migrations run automatically (or php bin/celena migrate).

After one manual update to 3.7 every later version installs with the button.

Moving from 3.5 to 3.6 and above

  • Add the marketplace public key to .env (it is in the new .env.example): MARKETPLACE_PUBKEY="6q2vesNDnmG4QuwMh7NUCo+2V8SNYSs2HwcAIbnVnew=" — without it package signatures are not verified.
  • Set chmod 600 .env.
  • Check the recipients of the lead form: «Leads → Forms».
  • Mark your own packages that must never reach the marketplace with a .private file in their root.

The full list of changes is in CHANGELOG.md in the site root.