Moves to Amazon Lightsail, A Follow-Up

One change I missed after migrating to Lightsail, was ensuring that all the posts with images in them were displaying those images on the new site the way they were on the old. A scroll backward through previous posts revealed the problem quickly enough, but life is busy so it took awhile until I had enough time fix it. The steps I expected I would need to take to resolve the missing images issue were roughly the following:

  • Start up the old EC2 instance
  • Download the old images
  • Upload the old images to the new instance on Lightsail

Because I only stopped the previous EC2 instance instead of terminating it, I was able to re-start it. To download the old images, I’d have to find them first. Having self-hosted WordPress for awhile, I knew the images would be in subfolders under wp-content/uploads, so the only real question remaining was where exactly the old Bitnami image rooted the install. Once I “sshed” into the instance, that location turned out to be ~/stack/apps/wordpress/htdocs/wp-content/uploads. Images were further organized by year and month of blog posts. To simplify the downloading of old images, I had to knock the rust off my usage of the tar command. Once I’d compressed all those years of images into a few archive files it was time to get them off the machine. I used this Medium post to figure out the right syntax for my scp commands.

Once the archive files were on my local machine, I needed to get them onto the Lightsail instance (and expand them into its uploads folder). But just as I did compressing and pulling the files down from the EC2 instance, I had to figure out where they were in the new Bitnami image. As it turned out, the path was slightly different in the Lightsail image: ~/stack/wordpress/wp-content/uploads. Once I uploaded the files with scp, I had to figure out how to move them into the years and months structure that would match my existing blog posts. Using the in-brower terminal, I was reminded that the tar command wouldn’t let me expand the files into an existing folder structure, so I created an uploads-old folder and expanded them there. Then I had to figure out how to recursively copy the files there into uploads. It took a few tries but the command that ultimately got me the result I wanted was this:

sudo cp -R ./uploads-old/<year>/* ./<year>

Now, every post with images has them back again. Moves to Amazon Lightsail

Before last year ended, I moved this blog off its EC2 instance running a too-old version of PHP to an Amazon Lightsail instance in a new region. The original rationale for hosting on EC2 was to have a project and a reason to do things in AWS other than whatever a certification course might teach. But having finally earned that AWS Certified Solution Architect Associate certification last spring (and paid more in hosting fees than a blog as small as this really merits), the switch to a simpler user experience and lower cost for hosting was overdue.

Lightsail made it simple to launch a single self-contained instance running the latest version of WordPress. The real work was getting that new instance to look like the old one. Getting my posts moved over wasn’t hard, since I make a regular habit of using Tools > Export > All Content from the dashboard to ensure I have a WordPress-compatible copy of my posts available. The theme I use however (Tropicana) recommends far more plugins than I remember when I first chose it. The Site Health widget nags you about using a persistent object cache, so I tried getting the W3 Total Cache plugin working. I kept seeing an error about FTP permissions that I couldn’t resolve so I got rid of the plugin and Site Health said the server response time was ok without it. Another plugin I got rid of was AMP. Something about how I had AMP configured was seemed to prevent the header image from loading properly. With AMP gone, everything worked as before. Akismet Anti-Spam and JetPack are probably the most important plugins of any WordPress install so I made sure to get those configured and running as soon as possible.

The last change I needed to make was the SSL certificate. The Lightsail blueprint for WordPress (the official image from Bitnami and Automattic) has a script which automatically generates certs using Let’s Encrypt. When the script didn’t work the first time (because I’d neglected to update my domain’s A record first), I went back and made that change then shut down the (now) old EC2 instance.

GenXJamerican 2.0 still needs some more changes. I used to have a separate blog just for photos, years ago when one of my best friends was hosting WordPress instances. The Social Slider Feed plugin lets you pull in content from Instagram and other social media sites, so I’ve added those to a Photos page. Once I figure out the photo gallery plugin, that should be the next update. I’ll also be looking into the ActivityPub and WebFinger plugins as part of my growing interest in Mastodon.