Ultimate Guide to Install WordPress on Amazon AWS for Free. In this guide, I will show you how I set this website up on AWS for free. You will need some technical knowledge(unless you are really good at following directions), as we will be doing the following.
Set up https. (probably the most challenging part to get right)
Create an AWS Account
What is AWS?
AWS, short for Amazon Web Services, is a cloud computing platform offered by Amazon.com. It provides a wide range of services and solutions for building and deploying applications and services in the cloud. AWS offers pay-as-you-go pricing, scalability, reliability, security, and a global presence. Some notable services include virtual servers (EC2), scalable storage (S3), managed databases (RDS), serverless computing (Lambda), messaging (SNS and SQS), data warehousing (Redshift), content delivery (CloudFront), and application deployment (Elastic Beanstalk). AWS is a popular choice for individuals and businesses seeking flexible and cost-effective cloud computing solutions.
Go here to sign up for an AWS account. And you should see the following page. Just enter your email and choose a name for your account. You will need to enter your credit card, but note that we will be using the free tier in this example. You should ensure you have set up 2-factor authentication and a complex password. Disclaimer – I am not responsible for any charges you may incur, it is the responsibility of the reader to ensure they safegaurd their account.
Spin up a server with WordPress.
Next we will be launching a virtual server that will have WordPress pre-installed.
First we need to go to EC2.
This is where the virtual servers are created.
On the EC2 Dashboard, you should see the following:
You will see the following screen.
Type in a server name, and then click on browse more AMI’s. AMI’s are Amazon Machine Images, think pre-packaged servers that have already done most the hard part for you. The one we are looking for is called:
WordPress with NGINX and SSL Certified by Bitnami and Automattic
Select that and continue. Eventually you will get back to the ‘Launch an Instance’ page.
There will be a couple of sections here where care is needed. For the instance type, ensure you pick a t2.micro, and it is free tier elligible. It’s plenty powerful enough for our immediate needs.
For they Key Pair login, you need to click on Create new key pair.
Then you will se following screen:
Give it a name, and a .pem is fine, we will convert it later as needed. Save the resulting file somewhere safe, and do not share it with anyone.
Next, we go to the network settings: Ensure you select ‘My IP’, on the ‘allow SSH traffic from’
This means that only people in your house should be able to access that server.
Next, you click on ‘Launch Instance’ and go get a cup of coffee, you earned it.
Create an Elastic IP address.
Now we are going to create an elastic ip address, this will give the server a static ip address that will not change every time you reboot it. On the left of the page, scroll down and click on Elastic IP’s.
Then you will see this screen:
Here, click on Allocate Elastic IP Address. You can leave the defaults and go ahead and click ‘Allocate’ at the bottom. Un-associated Elastic IP addresses do incur a charge, so don’t walk away and come back to this in a few months. Highlight you Elastic IP and from the ‘Actions’ drop down, select Assoiate Elastic IP Address.
Next you will see something similar to this page. Ensure the Resource Type is instance, then click in the instance box and select the server we created earlier.
Associate a domain name
This part here will be different depending on who your domain registrar is. Assuming you have a domain already, if not you can try these guys Domain.Com. Or check my article on Domain Names and the importance of picking the right one.
Remember that Elastic IP Address we created, we are going to need that, so copy it into notepad or whatever you do. You will need to add a record to your DNS Records, the Type will be “A” and the value will be the “IP Address” for example(18.104.22.168 – I just realized I’d been blurring it for reason, not like it’s secret 🙂 )
Once you save that, go take another break, when you come back we are going to connect to your WordPress admin page.
But first we need to know the username and password.
Find you WordPress username and password.
You could in theory go to your WordPress login page now, which would be
But your browser will not like it, you might need to try other browsers, because some will say it’s not safe, ignore it and get through to it if you can.
But you still need a username and password, for that we need to go back to AWS -> EC2.
We are looking to find the system log for your server. Here’s how you do that. On the left, click ‘instances’, then select your instance, go to ‘actions’, ‘monitor and troubleshooting’ and finally get system log.
On the next screen, go ahead and download the log and open it in your favorite text editor.
Search for ‘username’ and you should come across something like this, and use these credentials to log into WordPress.
Set up https
Your website is going to be of no use to anyone unless you can deliver your content via HTTPS, some browsers will refuse to show the pages.
Now, there are ways to do this that cost money and ways that don’t cost money, but require a little more maintenance.
I’m cheap, so guess which one I’ll be showing you.
Now, I’m not here to teach WordPress, at least not in this blog entry. So I’m assuming you have some familiarity with it. You will need to log in and activate a plug in.
It’s called SSL Zen, you need to add it, activate it and follow the instructions. The end result of which will be a few files in a directory on your machine. Namely the top 3 shown here. The last file you should already have from when the key pair was created.
I’m not a linux expert, or a putty expert, so I do things my way. I like using WinSCP to transfer files from my machine to the server, and Putty to run commands, if you know better ways, feel free to leave a comment.
That’s the free part over, if you purchased an SSL certificate the rest should still apply.
WinSCP – the user name is bitnami, no password and use SCP as the protocol. In the advanced section you need to specify your pem file, it will automatially convert it to a ppk file when you try and use it.
At this point you should be able to connect and see the contents of your server. You can go ahead and upload the top 3 files to your home folder. And at this point you can Putty into your server as well. When prompted for a login, use bitnami.
Now, since our server is NGINX, we need an extra step. Go to your home folder in Putty, and type the following command.
$ cat certificate.crt ca_bundle.crt >> certificate.crt
What this will do is merge the two certificates into one.
At this point, I can save you a lot of headache, open the file by double clicking in WinSCP.
When I merged them, the middle of the file looked like this:
This will end up corrupting the certificate and NGINX will throw errors. To fix it put a carriage return after the 5th dash, so the END CERTIFICATE is on one line, and BEGIN CERTIFICATE is on another. Like this:
For the next step, there are a couple of ways you could go, I’m lazy and did not want to update the NGINX configuration file, so I renamed these two remaining files as such:
Certificate.crt becomes server.crt
Private.pem becomes server.key
And then overwrite the existing files at this location:
Now we just restart NGINX and we should be good to go.
sudo /opt/bitnami/ctlscript.sh restart nginx
You should now have everything set up, there’s still more work to do if you intend to use your site for affiliate marketing, such as setting up email ingoing vs outgoing, site design, setting up blogs, use a few good plugins, perform SEO, link to Google Analytics, , all of which you can get from my book.