{"id":8500,"date":"2020-03-16T12:33:12","date_gmt":"2020-03-16T12:33:12","guid":{"rendered":"https:\/\/www.gosquared.com\/blog\/?p=8500"},"modified":"2020-03-16T12:33:17","modified_gmt":"2020-03-16T12:33:17","slug":"simple-high-availability-wordpress-hosting-on-aws","status":"publish","type":"post","link":"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws","title":{"rendered":"Simple high-availability WordPress hosting on AWS"},"content":{"rendered":"\n<figure class=\"wp-block-image alignwide size-large\"><img decoding=\"async\" src=\"https:\/\/static.gosquared.com\/images\/liquidicity\/20_03_04_Wordpress_Hosting_on_AWS\/20_03_04_AWSCloud_01@2x.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>If you&#8217;re a regular around these parts, you may have noticed that this blog recently got a&nbsp;<a href=\"https:\/\/www.gosquared.com\/blog\/designing-blog\">complete overhaul<\/a>. But we didn&#8217;t just refresh the design with a new theme &#8211; we also completely revamped how it&#8217;s hosted to set us in good stead for anything we might want to do with it in the future.<\/p>\n\n\n\n<p>For years this blog has been running on a third-party managed WordPress solution, with a messy arrangement of reverse-proxy servers and caching layers to keep it running smoothly and without falling over every time we had a mild traffic spike. With this new version, we&#8217;re now running everything inside our own infrastructure on AWS, which gives us much more comprehensive control over how everything is managed and scaled.<\/p>\n\n\n\n<p>If you&#8217;re just interested in how you can do this for yourself, jump straight to the&nbsp;<a href=\"https:\/\/aws.amazon.com\/cloudformation\/\">CloudFormation<\/a>&nbsp;template at the end of this post. If you&#8217;re interested in some of the potential gotchas and caveats involved, read on.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Should I even be running WordPress myself?<\/h2>\n\n\n\n<figure class=\"wp-block-image alignwide size-large\"><img decoding=\"async\" src=\"https:\/\/static.gosquared.com\/images\/liquidicity\/20_03_04_Wordpress_Hosting_on_AWS\/20_03_04_Question_01@2x.png\" alt=\"\"\/><\/figure>\n\n\n    <div class=\"wp-block-admire-block-signup\">\n        <div class=\"c-subscribe-widget\">\n            <div class=\"c-subscribe-widget__title\">Sign up to the GoSquared Newsletter<\/div>\n            <div class=\"c-subscribe-widget__text\">Inovative stores, Right in your Inbox<\/div>\n\n            <div class=\"c-subscribe-widget__form\">\n                            <iframe loading=\"lazy\" src=\"https:\/\/gsforms.net\/f\/GSN-168145-U\/bac2d5fb-9594-4b13-9d89-ad7722fd2290\" frameborder=\"0\" width=\"400\" height=\"198\"><\/iframe>\n            <script src=\"https:\/\/gsforms.net\/forms.js\" async><\/script>\n                        <\/div>\n        <\/div>\n    <\/div>\n\n\n<p>If you&#8217;re thinking of setting up and hosting your own WordPress, the very first question you should probably ask yourself is: should I even be doing this? There are plenty of managed WordPress hosting solutions available \u2014 companies that specialise entirely in hosting and managing WordPress at scale. In almost all scenarios, the setup will be easier, and these solutions will do a much better job than you can do trying to host things yourself.<br><br>In our case, we were migrating an existing setup, we already had a lot of the necessary moving parts in place for directly integrating with our load balancers and CDNs, and decent knowledge of setting up and running fault-tolerant MySQL databases. Even still, it was a very close decision between spinning up our own infrastructure vs. integrating a third-party hosted solution.<br><br>So if you&#8217;re thinking of starting a WordPress site \/ blog from scratch, or if you don&#8217;t already have a decent amount of infrastructure and team knowledge around running scalable web servers, CDNs, and databases, you probably don&#8217;t want to be running your own WordPress. Instead, pick a hosted provider, point\u00a0<a href=\"http:\/\/blog.yourdomain.com\/\">blog.yourdomain.com<\/a>\u00a0at it, and let them take care of the rest.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Batteries not included<\/h2>\n\n\n\n<figure class=\"wp-block-image alignwide size-large\"><img decoding=\"async\" src=\"https:\/\/static.gosquared.com\/images\/liquidicity\/20_03_04_Wordpress_Hosting_on_AWS\/20_03_04_Batteries_01@2x.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>The template we provide here is based on AWS&#8217;s existing&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/aws-samples\/aws-refarch-wordpress\" target=\"_blank\">WordPress Reference Architecture<\/a>&nbsp;but drastically simplified to remove anything we didn&#8217;t need. In essence it&nbsp;<em>only<\/em>&nbsp;contains the parts relevant to the actual hosting of the WordPress instance itself. All the parts around CloudWatch alarms, CloudFront for CDN, setting various options via the CloudFormation console, and even integrating that hosting into our existing ELB infrastructure is not included.<\/p>\n\n\n\n<p>So, in this template you can expect to find:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>MySQL database on Aurora<\/li><li>Elasticache for memcached<\/li><li>Auto-scaled web tier servers, with a single PHP version<\/li><li>An ELB target group<\/li><\/ul>\n\n\n\n<p>That&#8217;s it. Nothing else. So if you need any of the following, you&#8217;re probably better off trying with the reference architecture<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>CloudFront distribution setup<\/li><li>Point-and-click setup using the CloudFormation console to choose PHP versions or other options<\/li><li>A full CloudFormation stack including ELBs, security groups, and subnet setup<\/li><\/ul>\n\n\n\n<p>If you&#8217;re not sure what any of these things are, or if you&#8217;re unsure of whether you need them &#8211; again, you&#8217;re probably better off going with a third-party hosted system so you don&#8217;t have to worry about any of the details.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Making it fast<\/h2>\n\n\n\n<figure class=\"wp-block-image alignwide size-large\"><img decoding=\"async\" src=\"https:\/\/static.gosquared.com\/images\/liquidicity\/20_03_04_Wordpress_Hosting_on_AWS\/20_03_04_Make_It_Fast_01@2x.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>There&#8217;s a lot bunch more to hosting WordPress than standing up an Apache server and uploading the PHP files somewhere. It also needs to perform reasonably well and be resilient to failure. Here are a few of the things we did, both inside this CloudFormation template and in addition to it, to make that happen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Aurora for MySQL<\/h3>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/aws.amazon.com\/rds\/aurora\/\" target=\"_blank\">Aurora<\/a>&nbsp;is AWS&#8217;s MySQL-compatible database engine which comes with better performance and availability out-of-the-box than running standard MySQL on RDS. The actual performance benefits of Aurora over standard MySQL are unlikely to be noticeable on a simple WordPress-based workload, but the convenience of durability and flexibility we get from Aurora was enticing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Scalable and redundant web tier<\/h3>\n\n\n\n<p>When it&#8217;s optimised well, a WordPress installation should take fairly little load. In fact this whole blog&nbsp;<em>should<\/em>&nbsp;be able to run on a single t3.micro EC2 instance if we wanted it to. But we wanted to run this blog with the same philosophy as our other systems in AWS \u2014 that every single customer-facing web server should be behind a load balancer, in an auto-scaling group, with at least two instances running at all times. This means we can scale it up or down, and survive failures on a web server, without the whole blog disappearing from the internet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">EFS for shared file system<\/h3>\n\n\n\n<p>There are many different ways to scale a PHP-based application where you want to make in-place modifications to the source (e.g. in WordPress if you want to use the built-in plugin management and upgrade systems). One way would be to have a single &#8220;admin&#8221; server that can handle the read\/write part of the workloads, and have the source replicated over to the public-facing web servers, which would treat it as read-only. However, we instead decided to run a shared filesystem on&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/aws.amazon.com\/efs\/\" target=\"_blank\">Amazon EFS<\/a>&nbsp;so all the web servers have the same view of the files. There are plenty of reasons why you might&nbsp;<em>not<\/em>want to do this, which we weighed up before deciding to run with this solution. EFS can be slow &#8211; especially in any sort of IO-intensive workload this can be absolutely killer. But with the various levels of caching we have in place we&#8217;ve not found this to be a problem. The benefit we get is a simplified system where all servers in our web tier look the same, and we can use all WordPress&#8217;s built-in features without any special treatment.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">PHP&#8217;s OPcache<\/h3>\n\n\n\n<p>OPcache is PHP&#8217;s mechanism to cache the compiled opcode version of a file rather than having to continually read and re-interpret it whenever it&#8217;s needed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">W3 Total Cache &amp; ElastiCache<\/h3>\n\n\n\n<p>W3 Total Cache is a WordPress extension that handles caching of pretty much every single thing in WordPress in a variety of ways. By setting it up to point at the&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/aws.amazon.com\/elasticache\/\" target=\"_blank\">ElastiCache<\/a>&nbsp;node in the stack, WordPress very rarely actually needs to go to the MySQL database or do any expensive computation when serving a request. The plugin handles all the necessary processes of invalidating the cache whenever anything changes, so there&#8217;s no special settings to tweak or buttons to press when making changes such as publishing a new post.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">W3 Total Cache &amp; CloudFront<\/h3>\n\n\n\n<p>W3 Total Cache also includes options for offloading static assets such as theme files and images to a CDN such as&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/aws.amazon.com\/cloudfront\/\" target=\"_blank\">Amazon CloudFront<\/a>. We already have a CloudFront distribution set up on&nbsp;<a rel=\"noreferrer noopener\" href=\"http:\/\/cdn.gosquared.com\/\" target=\"_blank\">cdn.gosquared.com<\/a>&nbsp;as a mirror of www.gosquared.com, so it was a simple matter of enabling the necessary settings, and now practically everything can be cached and served through this distribution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Our priorities when making these choices<\/h2>\n\n\n\n<figure class=\"wp-block-image alignwide size-large\"><img decoding=\"async\" src=\"https:\/\/static.gosquared.com\/images\/liquidicity\/20_03_04_Wordpress_Hosting_on_AWS\/20_03_04_RelaxedCloud_01@2x.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>In making the choices around using EFS, W3 Total Cache, and others, our primary concern was making sure that we didn&#8217;t introduce any &#8220;magic&#8221; into the process of writing and editing on this blog. As far as our content-writers and editors are concerned, everything is just &#8220;normal&#8221; WordPress. It can be used the same as if none of these extra moving parts were there \u2014 cache invalidation is automatic; installation and updates for plugins is point-and-click in the WP admin UI, and there&#8217;s no special features they have to rely on. Our company&#8217;s business is not in WordPress hosting &#8211; any extra overhead to running this blog is, in AWS&#8217;s terms &#8211; undifferentiated heavy lifting.<\/p>\n\n\n\n<p>There are definitely things we&nbsp;<em>could<\/em>&nbsp;do to further improve performance, resilience, or security, but many of these would sacrifice that convenience. So we&#8217;ve priorities making sure things are good&nbsp;<em>enough<\/em>&nbsp;in those regards but no more. Again, if we wanted something&nbsp;<em>significantly<\/em>&nbsp;better than where we&#8217;re currently at, we would instead seek out a third-party solution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The template<\/h2>\n\n\n\n<figure class=\"wp-block-image alignwide size-large\"><img decoding=\"async\" src=\"https:\/\/static.gosquared.com\/images\/liquidicity\/20_03_04_Wordpress_Hosting_on_AWS\/20_03_04_Template_01@2x.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>So here it is, the CloudFormation template for running a barebones scalable WordPress installation on EC2. It&#8217;s what we&#8217;re currently using for this blog, and it seems to be serving us reasonably well so far.<\/p>\n\n\n<style> .gist-file .gist-data { max-height: 500px; overflow: auto; } <\/style>\n<p><script src=\"https:\/\/gist.github.com\/jbt\/712d1abdf40db84ea5e24d8c5d0db712.js\"><\/script><\/p>\n\n\n<h2 class=\"wp-block-heading\">Could we do better?<\/h2>\n\n\n\n<figure class=\"wp-block-image alignwide size-large\"><img decoding=\"async\" src=\"https:\/\/static.gosquared.com\/images\/liquidicity\/20_03_04_Wordpress_Hosting_on_AWS\/20_03_04_Any_Thoughts_01@2x.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>There&#8217;s almost certainly plenty of ways this can be improved. We know we&#8217;re not experts in WordPress hosting and optimisation, which is why we&#8217;ve gone for barebones and simple here. But if you think there&#8217;s anything we can improve, or add, then let us know on <a href=\"https:\/\/twitter.com\/GoSquared\">twitter<\/a>. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you&#8217;re a regular around these parts, you may have noticed that this blog recently got a&nbsp;complete overhaul. But we&#8230;<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1452],"tags":[119,978],"class_list":["post-8500","post","type-post","status-publish","format-standard","hentry","category-engineering","tag-aws","tag-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.6 (Yoast SEO v19.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Simple high-availability WordPress hosting on AWS - GoSquared Blog<\/title>\n<meta name=\"description\" content=\"Use this CloudFormation template to create a barebones highly-available WordPress solution hosted on AWS EC2, with Aurora and EFS.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Simple high-availability WordPress hosting on AWS\" \/>\n<meta property=\"og:description\" content=\"Use this CloudFormation template to create a barebones highly-available WordPress solution hosted on AWS EC2, with Aurora and EFS.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws\" \/>\n<meta property=\"og:site_name\" content=\"GoSquared Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/GoSquared\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-16T12:33:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-03-16T12:33:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2020\/03\/20_03_04_AWSCloud_OG_01@2x.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2049\" \/>\n\t<meta property=\"og:image:height\" content=\"1025\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2020\/03\/20_03_04_AWSCloud_OG_01@2x.png\" \/>\n<meta name=\"twitter:creator\" content=\"@floopily\" \/>\n<meta name=\"twitter:site\" content=\"@GoSquared\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"JT\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#organization\",\"name\":\"GoSquared\",\"url\":\"https:\/\/www.gosquared.com\/blog\/\",\"sameAs\":[\"https:\/\/instagram.com\/gosquaredteam\",\"https:\/\/www.linkedin.com\/company\/go-squared-ltd.\",\"https:\/\/www.facebook.com\/GoSquared\",\"https:\/\/twitter.com\/GoSquared\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2015\/07\/gosquared.png\",\"contentUrl\":\"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2015\/07\/gosquared.png\",\"width\":1270,\"height\":250,\"caption\":\"GoSquared\"},\"image\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#website\",\"url\":\"https:\/\/www.gosquared.com\/blog\/\",\"name\":\"GoSquared Blog\",\"description\":\"Turn visitors into customers.\",\"publisher\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.gosquared.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#primaryimage\",\"url\":\"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2020\/03\/20_03_04_AWSCloud_OG_01@2x.png\",\"contentUrl\":\"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2020\/03\/20_03_04_AWSCloud_OG_01@2x.png\",\"width\":2049,\"height\":1025},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#webpage\",\"url\":\"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws\",\"name\":\"Simple high-availability WordPress hosting on AWS - GoSquared Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#primaryimage\"},\"datePublished\":\"2020-03-16T12:33:12+00:00\",\"dateModified\":\"2020-03-16T12:33:17+00:00\",\"description\":\"Use this CloudFormation template to create a barebones highly-available WordPress solution hosted on AWS EC2, with Aurora and EFS.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.gosquared.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Simple high-availability WordPress hosting on AWS\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#webpage\"},\"author\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/bfcd35bf2eba92ecbeea67937cd23eef\"},\"headline\":\"Simple high-availability WordPress hosting on AWS\",\"datePublished\":\"2020-03-16T12:33:12+00:00\",\"dateModified\":\"2020-03-16T12:33:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#webpage\"},\"wordCount\":1448,\"publisher\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2020\/03\/20_03_04_AWSCloud_OG_01@2x.png\",\"keywords\":[\"AWS\",\"Wordpress\"],\"articleSection\":[\"Engineering\"],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/bfcd35bf2eba92ecbeea67937cd23eef\",\"name\":\"JT\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/772e026206b900a5ba17ebbe63e34a4c8a9103524cf0ba3accfa38b14d7d03ba?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/772e026206b900a5ba17ebbe63e34a4c8a9103524cf0ba3accfa38b14d7d03ba?s=96&d=mm&r=g\",\"caption\":\"JT\"},\"description\":\"JT is a co-founder and the lead front-end engineer at GoSquared. He's responsible for the shiniest of the shiny projects we work on.\",\"sameAs\":[\"https:\/\/twitter.com\/floopily\"],\"url\":\"https:\/\/www.gosquared.com\/blog\/author\/jt\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Simple high-availability WordPress hosting on AWS - GoSquared Blog","description":"Use this CloudFormation template to create a barebones highly-available WordPress solution hosted on AWS EC2, with Aurora and EFS.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws","og_locale":"en_US","og_type":"article","og_title":"Simple high-availability WordPress hosting on AWS","og_description":"Use this CloudFormation template to create a barebones highly-available WordPress solution hosted on AWS EC2, with Aurora and EFS.","og_url":"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws","og_site_name":"GoSquared Blog","article_publisher":"https:\/\/www.facebook.com\/GoSquared","article_published_time":"2020-03-16T12:33:12+00:00","article_modified_time":"2020-03-16T12:33:17+00:00","og_image":[{"width":2049,"height":1025,"url":"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2020\/03\/20_03_04_AWSCloud_OG_01@2x.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_image":"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2020\/03\/20_03_04_AWSCloud_OG_01@2x.png","twitter_creator":"@floopily","twitter_site":"@GoSquared","twitter_misc":{"Written by":"JT","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/www.gosquared.com\/blog\/#organization","name":"GoSquared","url":"https:\/\/www.gosquared.com\/blog\/","sameAs":["https:\/\/instagram.com\/gosquaredteam","https:\/\/www.linkedin.com\/company\/go-squared-ltd.","https:\/\/www.facebook.com\/GoSquared","https:\/\/twitter.com\/GoSquared"],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2015\/07\/gosquared.png","contentUrl":"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2015\/07\/gosquared.png","width":1270,"height":250,"caption":"GoSquared"},"image":{"@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"WebSite","@id":"https:\/\/www.gosquared.com\/blog\/#website","url":"https:\/\/www.gosquared.com\/blog\/","name":"GoSquared Blog","description":"Turn visitors into customers.","publisher":{"@id":"https:\/\/www.gosquared.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.gosquared.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#primaryimage","url":"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2020\/03\/20_03_04_AWSCloud_OG_01@2x.png","contentUrl":"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2020\/03\/20_03_04_AWSCloud_OG_01@2x.png","width":2049,"height":1025},{"@type":"WebPage","@id":"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#webpage","url":"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws","name":"Simple high-availability WordPress hosting on AWS - GoSquared Blog","isPartOf":{"@id":"https:\/\/www.gosquared.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#primaryimage"},"datePublished":"2020-03-16T12:33:12+00:00","dateModified":"2020-03-16T12:33:17+00:00","description":"Use this CloudFormation template to create a barebones highly-available WordPress solution hosted on AWS EC2, with Aurora and EFS.","breadcrumb":{"@id":"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.gosquared.com\/blog"},{"@type":"ListItem","position":2,"name":"Simple high-availability WordPress hosting on AWS"}]},{"@type":"Article","@id":"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#article","isPartOf":{"@id":"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#webpage"},"author":{"@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/bfcd35bf2eba92ecbeea67937cd23eef"},"headline":"Simple high-availability WordPress hosting on AWS","datePublished":"2020-03-16T12:33:12+00:00","dateModified":"2020-03-16T12:33:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#webpage"},"wordCount":1448,"publisher":{"@id":"https:\/\/www.gosquared.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.gosquared.com\/blog\/simple-high-availability-wordpress-hosting-on-aws#primaryimage"},"thumbnailUrl":"https:\/\/www.gosquared.com\/blog\/wp-content\/uploads\/2020\/03\/20_03_04_AWSCloud_OG_01@2x.png","keywords":["AWS","Wordpress"],"articleSection":["Engineering"],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/bfcd35bf2eba92ecbeea67937cd23eef","name":"JT","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.gosquared.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/772e026206b900a5ba17ebbe63e34a4c8a9103524cf0ba3accfa38b14d7d03ba?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/772e026206b900a5ba17ebbe63e34a4c8a9103524cf0ba3accfa38b14d7d03ba?s=96&d=mm&r=g","caption":"JT"},"description":"JT is a co-founder and the lead front-end engineer at GoSquared. He's responsible for the shiniest of the shiny projects we work on.","sameAs":["https:\/\/twitter.com\/floopily"],"url":"https:\/\/www.gosquared.com\/blog\/author\/jt"}]}},"wps_subtitle":"Use this CloudFormation template to create a barebones highly-available WordPress solution hosted on AWS EC2, with Aurora and EFS.","_links":{"self":[{"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/posts\/8500","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/comments?post=8500"}],"version-history":[{"count":0,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/posts\/8500\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/media?parent=8500"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/categories?post=8500"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gosquared.com\/blog\/wp-json\/wp\/v2\/tags?post=8500"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}