I’m not a fan of WordPress, as it is neither cloud-ready nor serverless. That’s why this blog runs on CloudFront and S3 and is built by Hexo. But 25% of all websites are proudly published with WordPress. You will learn about the easiest way to run WordPress on AWS . Including fault tolerance and scalability.

The following figure shows the architecture of a fault tolerant and scalable WordPress environment on AWS.

Read on to learn more!

The problem

WordPress is a PHP application using two different data storages: a MySQL database and files on disk. Storing files on disk is a problem if you want to make use of a fleet of EC2 instances to run WordPress in a fault tolerant and scalable fashion.

The following example and figure are illustrating the problem.

Mary is uploading a new image for her blog post. The image file is stored on EC2 instance number 1. Mary is reading through her article. EC2 instance number 1 is answering her HTTP request to get the image. Bob is reading Mary’s article. EC2 instance number 2 is answering his HTTP request with a 404 Not Found error, as the image is stored only on EC2 instance number 1.

Tricky, you need to find a way to either synchronize files between all EC2 instances or outsource the files to a managed service.

The solution, 1st try

I tried to solve the problem of running WordPress on AWS before. WordPress on AWS: you are holding it wrong describes the solution in detail.

To summarize it briefly:

Using a WordPress plugin to store user uploads like images on S3 instead of storing them on disk.

Disabling all other WordPress features that are writing files to disk: install and update plugins or themes, the auto-updater, and writing a .htaccess file.

file. Automating the process of installing WordPress with all of its plugins and themes during the boot process of each EC2 instance.

But not being able to install plugins and themes and to use the auto-updater is inconvenient.

The solution, 2nd try

The Elastic File System service (EFS) joined the AWS family in January 2016. EFS is a highly available and scalable network file system that you can connect to your EC2 instances by using the NFS protocol. The perfect place to outsource files.