Upgrading from Ubuntu 12.x and Ghost 0.5.0, to Ghost 2.x and a newer Ubuntu is no joke. I had a few false starts, and ended up mostly starting fresh.
Luckily it looks like the upgrade story of Ghost itself has been nailed down since I first set up a Ghost blog 5 years ago.
The Ghost CLI tool is fairly well thought out and includes possibly my favorite command-line tool argument ever. (see the first one below)
# ghost help
ghost [command]
Commands:
ghost buster Who ya gonna call? (Runs `yarn cache clean`)
ghost config [key] [value] Configure a Ghost instance
ghost doctor [categories..] Check the system for any potential hiccups when installing/updating
Ghost
ghost install [version] Install a brand new instance of Ghost
ghost log [name] View the logs of a Ghost instance
ghost ls View running ghost processes
ghost migrate Run system migrations on a Ghost instance
ghost restart Restart the Ghost instance
ghost run Run a Ghost instance directly (used by process managers and for
debugging)
ghost setup [stages..] Setup an installation of Ghost (after it is installed)
ghost start Start an instance of Ghost
ghost stop [name] Stops an instance of Ghost
ghost uninstall Remove a Ghost instance and any related configuration files
ghost update [version] Update a Ghost instance
ghost version Prints out Ghost-CLI version (and Ghost version if one exists)
In the end, I followed this reference to build up a blue to my green, tested the new instance and then flipped the switch in DNS once things looked good enough.