Nginx 1.13

Varnish 6.0

HAProxy latest

Nginx Cluster 1.13



Redis 4.0

MariaDB 10.3 MasterSlave


The stack is suitable for highload wordpress sites which you can can scale as you want. It provides a one-click install solution for scalable WordPress with smart Varnish caching. The whole deployment takes about 10-15 minutes.

How the wordpress stack works

Nginx on front-end takes requests from users and proxying them to Varnish. Then Varnish checks cache: if it has a cached page for the response it sends the page back if has not, Varnish proxying the request to load balancer Haproxy, which distributes the load between several nodes.

In the nodes deployed NGINX in FastCGI mode with cluster configuration which allows NGINX sending responses to nearest PHP.

As a base is used MariaDB in master/slave configuration with Redis as object cache. 

The Scalable WordPress stack design

How to deploy WordPress quickly on Amazon S3, Digital ocean or your own hosts
  1. Click “Deploy to my server”
  2. Sign in or create an account
  3. Choose a provider (how to add a cloud provider) and a region if you want to create new hosts or choose the created ones in Select hosts menu
  4. Fill in necessary fields (if they are, e.g. link to your repository)
  5. Click Create hosts and services
Minimal recommended configuration
  • 2 hosts with 2GB RAM
  • 1 host with 1GB RAM
After deploying

You can:

  • Scale your app and database in few clicks
  • Add your domains
  • Add TLS certificates (including free TLS by Let’s Encrypt)
  • Check online logs and metrics
  • Update app and system requirements of hosts
How to scale

Check a quick gif example on how to scale a database (MariaDB) and an app (Python in this case) or follow the next steps:

To scale a database:

  1. Open a database service (name “db” in the stack by default)
  2. Click Scale 
  3. Choose hosts for slaves
  4. Click Scale service

To scale a WordPress service, you need to scale PHP-FPM service (name “blog” by default in the stack) and NGINX-Cluster(name “cluster” by default) and follow the next steps:

  1. Open a PHP-FPM service
  2. Click Scale
  3. Choose hosts you want to use for new PHP-FPM containers
  4. Click Scale service
  5. Do the same with NGINX-Cluster using the same hosts (each PHP-FPM service should be with NGINX-cluster at the same host(s))
There is nothing else needs to do. Load balancer works in Sticky session mode by default and balances PHP-FPM containers. HyperDB plugin is already configured and works well with MasterSlave configuration.