What is Blog?
Tags: aws, wordpress, 100daysofcode
Published: 2020-10-13 03:37:46

Hello there! This is my first post! It sure does feel good to be a proud owner of a brand new blog. Heck, it still even has that new blog smell! I must say though, it was a bit more work than I expected to get it up and running. While I was building my blog, I would often find myself scratching my head, searching for the next step. That elusive “next step” can often be a difficult thing to identify, especially when working on an unfamiliar process.

That is why I have decided that my very first blog post should be dedicated to just that. Let me show you the steps that I took to build my blog.

**Full disclosure:** 
I am definitely not saying that this is the only way to create a blog. There are plenty of different ways that you could do that. This is simply one of the ways that you could make a blog. It has worked for me and I hope that it works for you!

## What is a blog?

Nothing fancy here. This is the [definition](https://en.wikipedia.org/wiki/Blog) right from Wikipedia:
> *“A blog is a discussion of informational website published on the World Wide Web consisting of discrete, often informal diary-style text entries (posts). Posts are typically displayed in reverse chronological order, so that the most recent post appears first, at the top of the web page.”*

Got it? Good.

## Why should a developer have a blog?

Okay, so this is important: **Every developer should have a blog.**

This is not my opinion. This a recurring theme that I have found among the books, podcasts, and internet sites that I frequent. So, probably after a hundred times of being told to make my own blog, I decided to do just that. My hope for you is that you realize the importance of making your own blog, much sooner than I did. The sooner that you get started, the better!

Here I did a quick [Google search](https://www.google.com/search?q=why+should+a+developer+have+a+blog&rlz=1C1GCEU_enUS892US892&oq=why+should+a+developer+have+a+blog&aqs=chrome..69i57j0.6253j0j7&sourceid=chrome&ie=UTF-8) for you. Read some of the articles that you find. I am sure that they will do a thorough analysis of the many reasons why a developer would want a blog.

Still not convinced? Here is a [book](https://www.amazon.com/Technical-Blogging-Expertise-Remarkable-Presence/dp/1934356883/ref=sr_1_3?dchild=1&keywords=technical+blogging&qid=1589284370&sr=8-3) that I hope will convince you. It definitely convinced me.

## Blogging Platform

The next step is to choose a platform for your blog. There are many different choices for this step, but ultimately all of the different platforms can be categorized as either: **Free** or **Self-hosted**

**Free** 
There are many different free platforms that you can choose from. Some popular ones are Tumblr, WordPress.com, or Blogger. Now before getting excited over the idea of being able to set up a blog for free with less work involved, there are a couple of things that need to be taken into consideration.

First, by opting into a free platform, you are allowing that service to ultimately choose your domain name. You are also subject to their rules and restrictions. Often free platforms will also get to decide what ads are shown on your site. The ability to make money is also severely constrained. I might be a bit biased here, but my advice is to stay away from the free hosting platforms. You should want your blog to be everything that it can possibly be. This will only be achievable if you choose to use a self-hosted platform.

**Self-hosted**
Here we go. A self-hosted platform will allow you to create the blog of your dreams! With a self-hosted blog you can truly be the master of your site. The only rules that you have to follow are the ones that are put in place by your domain name’s registrar and your web-hosting service. Other than that you are completely in charge of your blog and its contents.

In case you are interested in learning more about the different blogging platforms, here is a good [review](https://www.wpbeginner.com/beginners-guide/how-to-choose-the-best-blogging-platform/) on the most popular ones. In this guide I am going to use WordPress.org to build my site. It is a popular choice for a reason and it is a good choice for someone who is building their first website. At any point here after that I mention “WordPress” I am referring to **WordPress.org.**

## Domain Name & Web Host

I am not going to get into too much detail about the different services that are available when choosing a domain name and web host. The reason is that this blog-building guide is going to show how to create a domain on [Amazon Route 53](https://aws.amazon.com/route53/) and then create a WordPress instance on [Amazon Lightsail](https://aws.amazon.com/lightsail/).

Why Amazon Lightsail? Well, for starters it is a pretty affordable service. Also it is relatively easy to use. I can say from my own personal experience that I found Lightsail quite user-friendly. I found the user interface (UI) intuitive and there was plenty of documentation to help me along the way.

This tutorial is intended to be a high-level overview of the required process to make a blog on Amazon Lightsail. As such, I am not going to get into too much of the nitty gritty. What I will do though, is provide you with all of the resources necessary to enable you to create your own blog. The authors of the following articles have done a wonderful job of laying out the required steps. I am sure that if you follow their outlined steps your site will be up and running in no time!

[This](https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html) is the official documentation that shows how to host a static site with [Amazon S3](https://aws.amazon.com/s3/), [Route 53](https://aws.amazon.com/route53/), and [CloudFront](https://aws.amazon.com/cloudfront/). [This](https://www.freecodecamp.org/news/a-beginners-guide-on-how-to-host-a-static-site-with-aws/) article walks you through those same steps that are outlined in the AWS documentation. It was written by Phoebe Voong-Fadel and she did a pretty great job in my opinion. Here is another pretty great [article](https://victoria.dev/blog/hosting-your-static-site-with-aws-s3-route-53-and-cloudfront/) written by Victoria Drake. I used the [documentation](https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html) and the two articles to get all set up. I have complete faith in you. If I can do it then so can you!

![](https://cdn-images-1.medium.com/max/2000/0*JVpjOrllmJEom83I.jpeg)

## Amazon Lightsail

Phew, glad you can make it. You are doing great! By this point you should have your very own static site. I know, super exciting stuff, right?! On to the next part!

**Deploying a highly available WordPress site on Amazon Lightsail**

I am going to hand it over to Mike Coleman, at this point. He put a whole lot of work into laying out all of the necessary details. I am not even going to try to compete.

[Here](http://wordpress.lightsailworkshop.com/lab.html) is an article by Mike that is going to get you where you need to go. It shows you how to create the WordPress instance and connect to your site. Hold off on the section about “Scaling the WordPress Servers”. Only do that section after choosing your theme and plugins. We will talk more about themes and plugins in a little bit.

Mike also has a four part set of instructions that are about setting up your WordPress instance. There is some overlap with the previous article of his, but that’s ok. It is better to have too much information than too little.

Part Four is similar to the section from the other article about scaling the servers. Just like before, hold off on this section until you have your site fully configured.

Just as a general reference, here is the [Best Practices for WordPress on AWS](https://d1.awsstatic.com/whitepapers/wordpress-best-practices-on-aws.pdf). Makes for a good read if you have some time to kill.

I am going to provide you with two more Lightsail tutorials that will help increase your blog’s functionality. Here is a link that describes how to [connect FileZilla](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-connecting-to-linux-unix-instance-using-sftp) to your WordPress instance. FileZilla is a FTP client. FTP allows you to move files back and forth between your site and your local computer. You can read more about it [here](https://en.wikipedia.org/wiki/File_Transfer_Protocol).

This [link](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-connecting-to-your-mysql-database) will show you how to install MySQL Workbench and then connect it to your WordPress instance. I am still learning about MySQL, so I can’t speak too much about it. I am currently taking this [course](https://www.udemy.com/course/the-ultimate-mysql-bootcamp-go-from-sql-beginner-to-expert/) to learn MySQL. A WordPress blog seems that it would be a great way to gain some meaningful experience with MySQL, which is a very important skill to have in the technology industry.

## Picking a WordPress Theme

Achievement unlocked!!! Good to see that you are still here. No time to stop now, we’ve almost reached the summit! Now let’s get started with making our website everything that it can be.

Let me tell you a little bit about my own personnel experience when I was building this site. When I logged in to my WordPress account for the first time, I was determined to use the free default theme for my site. It turned out to be much more challenging than I thought it would be.

WordPress comes with tons of features and add-ons to make it easy for a first-timer to create a publicly-hosted site. It is my recommendation to take advantage of them. Learn the basics of web development through WordPress and then move on to a more advanced [framework ](https://hackr.io/blog/top-10-web-development-frameworks-in-2020)for your future projects.

You want your first experience of building a website to have as little stress as possible, so I recommend that you **buy yourself a framework**. I used [Genesis](https://my.studiopress.com/themes/genesis/) and not once did I regret paying for it. I also used the [Beaver Builder](https://www.wpbeaverbuilder.com/) plugin as well. I found front-end development to be much much easier this way. It was much less stressful than using the free options that are available.

## WordPress Plugins

This is where the real magic happens. Plugins are what allow you to customize the functionality of your blog, so that it is able to meet your specific needs. I spent a whole lot of time trying to figure out which plugins would be the best for my blog, so let me do you a favor. Let me give you the list of all of the plugins that I am currently using. Now, I don’t want you to get the impression that these plugins that I am about to suggest are an end-all solution for your needs. You might not end up using a single one of the plugins that I am about to suggest. That’s ok. My list of plugins is simply a starting point for you, so that you can have an idea of the different plugins that are available. Here we go.

[Add from Server](https://wordpress.org/plugins/add-from-server/)
I was having issues figuring out how to upload media to my site. This plugin makes it considerably easier to upload the files that you need.

[Akismet Anti-Span](https://wordpress.org/plugins/akismet/)
Make sure that your site is protected from spam.

[All in One Favicon](https://wordpress.org/plugins/all-in-one-favicon/)
I had some trouble removing the Genesis favicon from my site. This helped me to remove it and replace it with a favicon of my choosing.

[All-in-One WP Migration](https://wordpress.org/plugins/all-in-one-wp-migration/)
This plugin allows you to move your site to a new location. I haven’t had to use it yet, but I imagine that is pretty helpful for when you need it.

[Beaver Builder](https://www.wpbeaverbuilder.com/)
I already mentioned this one, but I thought I’d include it again, just so you don’t forget : )

[Better Font Awesome](https://wordpress.org/plugins/better-font-awesome/)
Good plugin for social media icons. The designs might be a bit simplistic, but they have a wide variety and it is also fairly easy to use.

[Check Email](https://wordpress.org/plugins/check-email/)
Making sure that your WordPress site is sending/receiving emails can be kind of tricky. Use this plugin to test if your site is sending emails properly.

[Contact Form 7](https://wordpress.org/plugins/contact-form-7/)
I used this plugin to create a contact form for my site. When a site visitor enters their information into the contact form, it not only sends them a confirmation message, but it also sends me an email alert that a form was submitted. Pretty cool, right?!

[Copy Code to Clipboard](https://wordpress.org/plugins/copy-code-to-clipboard/)
This plugin will allow you to create snippets of text on your posts that can be copied by your user. Combine it with [SyntaxHighlighter Evolved](https://wordpress.org/plugins/syntaxhighlighter/) to create sections of code that your readers can copy!

[Genesis Title Toggle](https://wordpress.org/plugins/genesis-title-toggle/)
I found it easier to use Beaver Builder for my web page titles. The Genesis Title Toggle allows you to turn off the default Genesis titles, so you have more styling options when creating titles.

[Google Analytics Dashboard by MonsterInsights](https://wordpress.org/plugins/google-analytics-for-wordpress/)
See how people find and use your website with the #1 Google Analytics plugin for WordPress.

[Jetpack](https://wordpress.org/plugins/jetpack/)
A plugin with lots of features. People either seem to love it or hate. You can decide if it is right for you or not.

[Login LockDown](https://wordpress.org/plugins/login-lockdown/)
A plugin that will lock down your site if a certain number of failed logins are reached. Pretty good security feature to have.

[Really Simple SSL](https://wordpress.org/plugins/really-simple-ssl/)
Switch your site to SSL and enhance the security of your site.

[SEO Data Transporter](https://wordpress.org/plugins/seo-data-transporter/)
Transport SEO data from one theme/plugin to another.

[Sucuri Security](https://wordpress.org/plugins/sucuri-scanner/)
One of the best website security plugins. Allow your site users to feel safe while they check out your awesome content!

[SyntaxHighlighter Evolved](https://wordpress.org/plugins/syntaxhighlighter/)
I mentioned this one earlier, but I’ll mention it again, so you don’t forget : ) Enhance the aesthetic appeal of your code blocks and increase the professionalism of your site.

[UpdraftPlus](https://wordpress.org/plugins/updraftplus/)
Make sure that your site is always backed up.

[WP Mail SMTP by WPForms](https://wordpress.org/plugins/wp-mail-smtp/)
I know that I am going to sound like a noob, but oh well. I had a pretty hard time figuring out how get my emails to work with WordPress. This plugin helped a lot. Trust me.

[WP Offload Media Lite](https://wordpress.org/plugins/amazon-s3-and-cloudfront/)
This plugin will allow you store media files to Amazon S3. Pretty helpful stuff, if you ask me.

[WP Super Cache](https://wordpress.org/plugins/wp-super-cache/)
This plugin allows your site to generate static html files. This cuts down on the number of PHP scripts that need to be processed. I guess PHP scripts are a bit slower than html. The more you know.

[WPS Hide Login](https://wordpress.org/plugins/wps-hide-login/)
The default way to login to your site is by entering </wp-admin> after your website URL. The problem is that hackers also know this. This plugin allows you to create your own login slug.

[Yoast SEO](https://wordpress.org/plugins/wordpress-seo/)
Help your site be everything that it was meant to be! Climb higher and higher in the search engine ranks.

## Congratulations!

By now you should have a fully functional website. You should be proud of yourself! Building a website is no small accomplishment, and yet you did it! Feel free to celebrate if you want. If I were you, I would have myself an ice cream cone. Maybe even get two scoops! Maybe even sprinkles too!!!

Thanks again for dropping by and I hope that you found this tutorial useful!