WordPress: fault tolerant and scalable

Use this CloudFormation template to create a fault tolerant and scalable WordPress environment on AWS.

Features

  • HTTPS only
  • CDN caching static files
  • Scalable file storage
  • Fault tolerance due to multi-AZ setup

Services

This template combines the following services: CloudFront: CDN for dynamic and static content ELB: load balancer forwarding requests to EC2 instances and terminating SSL EC2: virtual machines running the web servers EFS: storage for WordPress files (WordPress core, plugins, themes, user uploads, ...) * RDS: MySQL database

Architecture

Installation Guide

  1. This templates depends on our vpc-*azs.yaml template. Launch Stack
  2. Create an ACM certificate for your domain name within the region you want to launch your stack in. Copy the ARN of the certificate. This is for the ELB.
  3. Create another ACM certificate for your domain in region us-east-1. Copy the ARN of the certificate. This is for CloudFront (note: CloudFront only supports ACM certificates in us-east-1)
  4. Launch Stack
  5. Click Next to proceed with the next step of the wizard.
  6. Specify a name and all parameters for the stack.
  7. Click Next to proceed with the next step of the wizard.
  8. Click Next to skip the Options step of the wizard.
  9. Check the I acknowledge that this template might cause AWS CloudFormation to create IAM resources. checkbox.
  10. Click Create to start the creation of the stack.
  11. Wait until the stack reaches the state CREATE_COMPLETE
  12. Grab the URL of the WordPress environment from the Outputs tab of your stack.

Dependencies

  • vpc/vpc-*azs.yaml (required)
  • vpc/vpc-ssh-bastion.yaml (recommended)
  • security/auth-proxy-*.yaml
  • operations/alert.yaml (recommended)

Limitations

  • WordPress will only run in two Availability Zones, even if your VPC stack has more.
  • PHP files are cached for 300 seconds on the web servers.
  • Static files wp-includes and wp-content are cached for 15 minutes on the CDN.
  • Pre-defined auto-scaling might not be able to cover your requirements and needs load and performance testing.