Switching from WordPress to Ghost on Microsoft Azure

A couple of weeks ago, I decided to transition my blog from WordPress to the Ghost blogging platform and I wanted to talk about that experience.

I recently went to my friend David Neal's website and found it to be simple, clean, and attractive. I found out that his blog was run on Ghost, a blogging platform that runs on top of Node. After doing some Googling, I decided that I would make a test website on Azure and see how I liked Ghost.

After setting up the website and tweaking the theme that I found, I had another couple people look at it and they thought that it was an improvement over my WordPress-based site. So I decided to go ahead and make the switch. Here are the steps that I took to do so.

  1. First thing's first: I had to find a hosting platform for Ghost. The official Ghost site offers one for $19 a month but I decided that was more than I wanted to spend, so I decided to reach into the Azure credits I get as an MSDN subscriber.
    I found a GitHub repo that allows you to set up your Ghost blog on Azure with just a few clicks. I cloned the repo so I could customize it and then set up my Azure site. I really like the Azure interface - there is a lot of power behind it - so that's what I'm going with for now. Scott Hanselman has a more detailed writeup on installing Ghost on Azure.

  2. I wanted to make sure that I exported all of the posts and pages that I had in my Wordpress site with all the links intact. This was not very difficult, but it was a bit time-consuming to tweak everything.
    First, I installed and ran a Wordpress plug-in which exported the contents of my blog to a JSON file which Ghost could use to import all of my old data.
    One thing that is different about Ghost is that it uses Markdown on top of HTML to render the posts, which I really like. The plugin exported my WordPress information and try to convert it to Markdown as best it could. It wasn't perfect and I had to go through post-by-post to tweak them and make sure that the HTML and the Markdown play nicely together.
    As anybody who's ever used a WYSIWYG editor knows, the HTML that is emitted is sometimes a little strange and this was no different. I just had to go through and edit and make sure that all of my HTML was correct.

  3. Another thing that I had to go back and redo were my posted code samples. They were originally contained inside of a WordPress plugin that would render them with proper syntax highlighting. I switched to using GitHub Gists a while ago but didn't bother going back and converting all of my old samples. So, I had to go through some of my older blog posts and create Gists from all the samples.
    It wasn't hard, but it was a little bit time consuming. I'm a firm believer that you shouldn't house what you don't have to, and Gists are just one of the many things that GitHub does really well.

  4. I tested each and every link, including all of the page links and short links that I created for my website. Thankfully, I didn't have to do much tweaking here because the Ghost to WordPress plug-in took care of that for me. It was very seamless and this didn't require a lot of effort - mostly just double checking.

  5. Finally, I had to select a theme for my site. I really liked David Neal's blog theme, so I look for a theme that was similar. I found one called Phantom and tweaked it. It was very easy to set up the Ghost software to run on my local machine. After I had done that, I was able to run and configure the Ghost blog as I went. A lot of this stuff that I tweaked was just personal preference. I ended up reducing the size of the font a bit and adding in navigation, which was not there originally.

Overall, I'm very happy with the blog. However, this does not come without some things lost. Firstly, I lost my Yoast SEO plug-in. It's kind of unfortunate because it does such a good job of analyzing your post and making sure that it's up to SEO standards. I'm still looking for alternatives here, but I'm not that worried about it.

Another thing I lose is the awesome WordPress app. I really liked the app because it would give me notifications when people left comments and when there was a spike in my traffic. It also had a decent editor that I could use to tweak blog posts on the fly, but I didn't do that that much so it wasn't that important. You could say that I miss being part of the WordPress ecosystem because there was so much to it.

However, I really like the fact that Ghost is first and foremost a blogging platform and that's all it will ever be. Plus, I find editing it to be way less intimidating than trying to make WordPress do exactly what I wanted to, which is why I rarely tweaked the look of my site before. I also really like the deployment model. When I used WordPress, I never set up a separate site to test and tweak things because it was so inconvenient to do so. It was a lot easier to set up Ghost to run on my local machine, make changes, push those to a GitHub repo, and have Azure install the new files from my Ghost repo automatically.

Some of the things I don't miss are the WYSIWYG editor, which is great until it does something that you don't intend for it to do. For example, table formatting was horrible. It would always add custom styles to the table body, rows, and cells, which meant that I had to constantly go back and either remove the styles or edit them in a separate editor. I find using Markdown to be a lot more natural, and I'm not locked into Markdown - I can just as easily add HTML to my page.

Overall, very happy with the results of this change. I ended up with a cleaner looking website up that I can be proud of. What would I recommend for you? If you want to make a change and desire a simpler blogging platform, then I would recommend giving Ghost a shot. However, you do lose a few thing, so overall if you're happy with your WordPress blog, I'd keep it.