February 10, 2019

Ghost, Nginx, and DigitalOcean

Okay, so let's kick this off with how I got this blog running. But first, some history and background. I started with Blogger, then moved to WordPress. I started to learn more about web development and server hosting so I migrated to self-hosted WordPress. High School and College took over and I started doing lots of new things, which included blog related stuff but not actual blogging. One of the new thing I picked up was Node.js but never really done much other than using it for school. Then a little over a year a go, I tried to get back to blogging and found Ghost and Nginx while researching for blogging platform. Now that's out of the way, let's dive in.

There are many choices for blogging software and platform, ranging from the traditional blogging software/platform WordPress that has withstood the test of time to a newly rising type of social blogging and journalism platform Medium.com. There are many, many more such as Ghost, Tumblr, Blogger, etc but before we get into that, I want to differentiate blogging software from platform, at least as according to me. A blogging software mean it is something you can download and run it yourself whereas a platform is a service that is provided to you, no download nor hosting is required. WordPress and Ghost are both, while Medium, Tumblr and Blogger are platform service provider only. You can't really download Tumblr and run it yourself. So to help me narrow down my choices, first I needed to decide how I want to host the blog, myself or use some provider. If I wanted to just focus on blogging and getting the content out there, using a popular platform provider is probably more preferred, especially Medium.com for its superb social feature. Instead of doing any heavy lifting to get the blog running, I just focus on writing. But that's not me, I want to do the heavy lifting. In fact, the heavy lifting part is what I enjoy, not so much the writing part. So that left me with WordPress or Ghost. Also, both WordPress and Ghost have their own platform service provider that you can use. However, like I said, I want to do the heavy lifting. I've used WordPress before and I like it but Ghost is the new kid in town, equipped with new technology and written in Node.js, something that I'm really starting to love. And so, I went with Ghost.

So I download Ghost, configured it and fired up Node.js. By itself, it's just a Node.js application so I need a web server. Apache comes to mind as it has been the de facto web server for ages. However, a while back I used Nginx as a load balancer and I quite like it. I could (and probably will) blog about Nginx vs Apache but in a nutshell, Nginx perform much better at serving static contents and handling concurrent connections, not so much at dynamic contents. If I was doing PHP(WordPress), Apache may be the better choice but for Ghost, Nginx was the was to go. In term of what I need it to do, I could probably use either web server but I want to try something new, so Nginx won me over and so far, I absolutely love it.

Lastly I needed a place to host. I could run Ghost and Nginx on my computer but there are better options. Originally I was using Shared Hosting services and they're great and cheap but performance wasn't up to my liking. So I went to Dedicated Server hosting, which hit my wallet quite hard. I wasn't getting THAT much traffic so I needed to downgrade but not too low, somewhere in the middle of shared hosting and dedicated hosting. The answer is the cloud, which I had a pretty good experience with by using Amazon Web Services for many other projects. I was going to use AWS to host and I did for a while but I found DigitalOcean through google and I gave the free trial a shot and after 2 hours, I decided to move. If I was doing some heavy backend processing, without a doubt, I would go with AWS. But DigitalOcean provided me with a nice contained box with everything I needed. I have a great experience with them and they're not paying me to say that at all. DigitalOcean is just exactly what I needed for Rithy58.com.

But yeah, that's how I ended up with Ghost, Nginx and DigitalOcean. This blog came out way longer than I expected and mostly just me rambling on. I'll try to write better blog post next time but for now, this is it.