For years, I haven’t done much of anything with a personal web site. Around the turn of the century, I played with all the popular PHP/MySQL-powered blog and photo album systems, but these have largely been left by the wayside. Up until recently, my personal web site was merely a few static HTML pages’ worth of notes, running on a hosted virtual machine.
Recently, I decided to start delving into serverless computing (mainly around AWS). Overhauling my personal site, and moving it into AWS, seemed like a nice way to do so. I like having a static web site, but more modern tools would be really handy. A friend recommended I try Hexo, so here we are.
Hexo is a Node.js engine for generating and deploying a set of static web pages for a blog site. Source can be comfortably checked into git, and the
hexo CLI tool will generate web pages and deploy them as needed.
So here’s my initial plan:
- Set up Hexo in AWS’s Code Commit git tree.
- Get Hexo to deploy to AWS S3
- Front the web server with AWS CloudFront (for theoretically infinite scaling)
- Use AWS Lambda to automatically rebuild the blog on every git commit
For now, I’m just covering the first item. The rest are topics for future days…
There’s lots of “getting started with Hexo” sorts of postings out there, plus a fairly fleshed-out bit of documentation on the Hexo web site, so I’m not going to go into tons of detail here. Similarly, there’s plenty of documentation on AWS CodeCommit, and how to set up an initial repository, so I’m only going to cover a few oddities here.
Hexo requires a slew of Node.js dependencies.
npm is your friend, and will put things in
node_package by default. For future reference, I added these:
That bit about
packages.json wasn’t obvious to me (a Node.js-neophyte) initially. Apparently running
npm install will parse your
packages.json file, and auto-install anything listed therein. Much easier than mucking about with system dependencies, or checking piles of Node scripts into your blog’s
git tree. Really gotta learn more about Node one of these days…
Anyway, being a long-time UNIX fan I whipped up a quick
Makefile to build everything:
For now, my fledgling blog just lives in an AWS code tree. Eventually, though, I should get around to the other points listed above (though that will be several subsequent posts).