Is Self-Hosting WordPress In The AWS Cloud Just Pie In The Sky?

Hosting in the cloud sounds so alluring: no physical constraints, real-time scaling for those traffic spikes, built-in redundancy, only paying for what you use.

Amazon’s Web Services is the granddaddy of cloud-computing and with the number of tutorials out there for setting up a site you might think that it was an obvious option for those WordPress owners fed up with shared hosting.

But is AWS really a viable option for WordPress owners who have only ever known CPanel?

A photo of a hand holding a paper cut-out cloud
To become king or queen of the cloud needs expertise and scale

I suspect that most WordPress owners see hosting as a necessary evil, which is presumably why WordPress.com with its “forget the hosting” proposition is so popular. We just want our hosting to work, we want our sites to be responsive and be available most of the time.

Cloud hosting is often touted as a solution to hosting woes, especially those woes experienced by shared hosting clients. Amazon’s Web Services (AWS) provides a multitude of cloud-based services but the ones we’ll touch on here are:

  • CloudFormation – a quick and easy way to create an instance (server) from a template
  • EC2 – this is where the instances are managed

I put my extremely limited (closer to non-existent) sys admin skills to the test and took AWS, specifically their CloudFormation service, for a spin. I wanted to find out just how feasible it is for the average WordPress site owner to move a site to the cloud.

Easy To Set Up

Screenshot of part 1 of the 4 part instance creation wizard
Creating a WordPress instance with CloudFormation is just too easy

With CloudFormation, setting up a *Nix instance on EC2 with WordPress installed is ridiculously easy. All I needed to do was either select WordPress from the template drop down or provide the url of one of the example templates.

After filling in a few extra details (I changed passwords so I knew what they were), away it went and in less than 10 minutes my brand new EC2 instance running WordPress was ready.

I set up a single WordPress install running with a local database but it’s just as easy to split the database out to run in Amazon’s RDS environment providing a pretty robust solution.

And, it doesn’t take much to edit the template and add the WP_ALLOW_MULTISITE to make the site multisite capable. Combine this with AWS’s Route 53 DNS service and set up a wildcard DNS and you’re well on your way to setting up a rival WordPress.com.

Not So Easy To Manage

It’s once I really started delving into the set-up that I started to run into problems. Not of AWS’s making but because of my own shortcomings.

Whilst installing plugins and themes and uploading to the media library were all fine, permalinks weren’t working and I had the 2MB limit on the media upload which I wanted to change.

But how?

I eventually managed to set up FileZilla to access the instance (getting a quick introduction to key pairs on the way). However, after I found my way to WordPress directory I discovered that any attempt to edit a file (such as wp-config.php) was met with a permission denied error, even though Better Security WP told me that the .htaccess file and wp-config.php were both writeable. Every attempt to upload a file resulted in a failed transfer.

So, reluctantly letting go of my GUI security blankets I fired up SSH, with some vague idea of changing file permissions, logged in (thanks to the directions in EC2 connect modal dialogue) and was immediately met with:

Screenshot of an SSH screen
In the Cloud, no-one can you scream “how many updates?”

Whoa! And this is when it hit home that I was totally on my own. Everything from the *Nix system upwards was now my responsibility. And all I had to help me was a command line with a cursor that mocked my ignorance with every blink.

Longing For CPanel

CPanel login box
The self-hoster’s biggest security blanket

Sure, I could have persevered and kept hoping that Google came up with the answers I was looking for but my goal here wasn’t to become a server expert. In fact, it was the opposite: could I host on AWS without needing to be a sys admin?

Looking at that command line, I found myself longing for CPanel. I wanted a GUI interface to give me easy access to all the seemingly simple functions such as accessing the file system. I wanted that abstraction, I wanted those icons. I certainly didn’t want to have to type commands even if I could remember what they were.

Actually, what I didn’t want was what the command line represented. I didn’t want to be responsible for the server. I felt hopelessly out-of-my-depth. I wanted someone else looking after the server software, updating, tweaking, deciding which of 243 total update(s) were necessary.

Need To Have Server Experience

And, this is the crux. Whilst AWS is no doubt incredibly flexible and the ability to create and destroy instances at will fantastic for creating temporary sites, you need to know what you are doing at that server level. You need to understand *Nix, you need to understand networking and you need to understand web servers.

In short, you need those sys admin skills that CPanel on a hosted account won’t have given you.

The Cloud Is For Big Boys And Girls

WordPress logo with text
The cloud is still the domain of the big players

Even if you’ve got the skills, there’s still the matter of cost. For a WordPress install running on a ‘small’ linux instance (160GB local storage, 1.7GB ram, low IO) with a local database and 50GB of traffic per month, the cost is just over $50 which is fairly expensive in comparison with even managed WordPress hosting. Up that to a ‘medium’ linux instance (410GB local storage, 3.7GB, 2 ECUs, moderate IO) and you’re upwards of $100 per month.

Now, if you have a popular site these sorts of figures are not going to scare you off and, in fact, the bigger a site gets then the more cost effective it becomes. There are also substantial savings to be made in prepaying for one or three years.

What About The Average WordPress Site Owner?

I don’t think that AWS is going to be viable for the majority of WordPress site owners. Self-hosting on AWS requires a level of knowledge considerably above and beyond that required to manage a hosting account via CPanel and you’ve either got to already have that knowledge or be inclined to pick it up on what seems to be a fairly steep learning curve.

It’s also a question of cost and you’ve got to work that AWS calculator with some realistic figures to see if the economics work.

If you are used to running your sites via CPanel then you are in for a rude shock when it comes to EC2. Whilst the web interface to create the instances is fine and relatively easy to follow, once set up then you are on your own and left with SSH. If you’ve never done this before then it’s all very daunting and you are looking at a learning curve that very much resembles a ‘J’.

There is no pathway from shared hosting to AWS for anyone but the most technical of WordPress owners. For the rest of us, if our current shared hosting arrangement is not delivering then we’d be better off looking at alternatives such as managed WordPress hosting or moving to virtual private server.

And keeping that CPanel security blanket.

Are you hosting a site using AWS or something similar? What has your experience been? How much of a sys admin have you become?

Photo Credit: Karen Ka Ying Wong