A few months ago I started upgrading ghost and got distracted in the middle of it by class-work. I ended up retiring the (Amazon Linux) host it was on in favor of an Ubuntu server. In the meantime mysql was upgraded a couple of versions and ghost had no intentions what-so-ever of playing along so I dropped it until this weekend.

I had installed mysql 8.0 but there was no way it was going to let me upgrade the crashed databases so I downgraded back to 5.6, then to 5.7, and finally back up to 8.0 without any issues. Nice.

Then it was time to upgrade ghost. Ghost has always been extremely painful to upgrade so I wasn't looking forward to it at all. I created a custom theme, added QR codes, and integrated S3 object storage which every upgrade ever has meant redoing all of that work by hand each time, as well as figure out ghost's versioning system. I was expecting a nightmare because this time I was upgrading from 1.x to 2.x. The last upgrade failed in the middle of such an upgrade.

However...  this upgrade was by far the easiest. I still had to upgrade the S3 bits by hand but everything else went pretty smooth. It was a little confused about if it was a fresh install (nothing on the OS was ready) or an existing install but it mostly just worked.

I'm curious how much of that is moving to Ubuntu and how much is ghost has improved.

One thing that I remembered, as I was trying to install all the npm modules, is that mysqld was causing the host to run out of memory. I had to stop mysqld to finish the install so I decided to switch over to sqlite3. I really wasn't looking forward to that but it couldn't have been simpler.

There are two ways to do it. One is to use the mysql2sqlite script on github to create the new database, or, simply export your site to json, update the conf file to point to an empty sqlite file, restart, and re-import your json file. It really was that simple and I got a bunch of memory/cpu back.