Upgrade Path Planner: From What You Run to What's Supported
Pick the versions on your server. You get the end-of-life dates, the steps in a safe order, what breaks at each one, and whether to upgrade in place or rebuild.
What the Server Runs Now
Choose "None" for anything that isn't on this server.
Where You Are
| Software | Support ends | Status |
|---|
The Plan
Why This Order
Backups and a rehearsal copy first. Every step below is tried on a copy of the server before the real one. A database upgrade in particular can't be undone, only restored.
PHP before the operating system. Most breakage is in the application code, not the server. Installing the new PHP beside the old one lets you move and fix sites one at a time, on a server that otherwise hasn't changed.
The database on its own. Upgraded separately, in its own window, so that if something is slow or broken afterwards, you know which change caused it.
The operating system last. By then PHP and the database are already where they need to be, so the release upgrade, or the move to a rebuilt server, changes as little as possible at once.
Questions
Can I upgrade Ubuntu from 20.04 straight to 24.04?
Not in place. do-release-upgrade goes one LTS at a time: 20.04 to 22.04, then 22.04 to 24.04. Each step needs its own checks, which is why two or more steps are often better done as a rebuild onto a fresh server with the newest release.
Should I upgrade PHP or the operating system first?
Usually PHP first, on the current server, with the newer version installed beside the old one from a PHP repository (Ondřej Surý's for Ubuntu and Debian). Sites move across one at a time and the code fixes happen without the server changing under you. Then the operating system upgrade doesn't change PHP at the same time.
Why did my site break after an Ubuntu upgrade?
Most often because the upgrade replaced PHP. Going from 20.04 to 22.04 swaps Ubuntu's PHP 7.4 for 8.1, and code that only worked on 7.4 stops. Installing the PHP version you need from a PHP repository before the upgrade avoids it.
Can MySQL skip versions?
No. MySQL supports upgrades from the previous series only: 5.7 to 8.0, then 8.0 to 8.4. MariaDB and PostgreSQL can jump several versions at once (mariadb-upgrade, pg_upgrade), after a backup and a test on a copy.
In place or rebuild?
In place suits a well-kept server one step from the target. A rebuild suits a server that has drifted for years, is two or more releases behind, or has no in-place path (CentOS 7, Amazon Linux 2). A rebuild also leaves the old server running as the way back.
How long do we have once a version reaches end of life?
Nothing stops working on the day, but security fixes stop, so every new flaw stays open. Customers' security questionnaires and Cyber Essentials both ask about unsupported software, which is often what forces the timing.
Want the Upgrade Done for You?
I plan, rehearse and run upgrades like these for agencies and software teams: a fixed quote, staging first, and a way back.