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.