Oleksandr Fesak
CEO
A guide to choosing and configuring high availability WordPress hosting
2022-07-12
Amount of businesses that failed due to poor web hosting is tremendous. You can make a stunning design, build a quality product, build your brand, and build a sales funnel, but if you take hosting lightly, it can ruin everything you did. Surprisingly, how many web hosting propositions are available across the web, and they all look so promising that you might think nothing could be better.
Web hosting is like a truck, which needs to be fast enough, reliable, and strong enough to carry heavy loads.
In this article, I will examine the following topics:
- What is the high availability on a website
- What are 3 types of web hosting commonly used for WordPress
- How to install AWS hosting for WordPress with preinstalled cPanel
What is the high availability on a website
People usually say that website hosting availability is when the server is able to respond 99.9% of the time. I'd include a load resistance here too, otherwise it makes no sense if the server that is up 99.9% of the time goes down because of too many connections.
Below is a list of key facilities (services) that help in better availability of the site:
- Correct web hosting. More information about that I will write below.
- CDN service.
- Proper caching mechanism.
- Load balancer (rarely used for WordPress).
Of course, the WordPress website should be technically correct itself, otherwise no one hosting will help.
What are 3 types of web hosting commonly used for WordPress
Type 1. Shared hosting
In this type of web hosting, your website resides on a single server instance along with others, and all resources are shared among all sites hosted on that server.
Advantages of shared hosting:
- Low cost.
- Simplicity in use.
Disadvantages of shared hosting:
- You are restricted in traffic and bandwidth.
- Shared resources are not isolated. In the case of a traffic surge on one website, all others may go down for some period.
- A large number of websites are usually hosted on one server instance, about one hundred.
- You are limited in the number of websites you can host.
Type 2. Managed WordPress hosting
This type of web hosting offers isolated system resources and a ready-to-use WordPress environment.
Advantages of managed WordPress hosting:
- Simplicity in use.
- Very quick site setup.
- Backup and staging options in a few clicks.
Disadvantages of managed WordPress hosting:
- You are restricted in traffic and bandwidth.
- You are restricted in the amount of hosted websites.
- You don't know the exact hardware resources you pay for. We think users significantly overpay for the allocated resources they have.
- Most of the managed WordPress hosting platforms have their global server-side cache to speed up hosted websites. It cannot be disabled, it cannot work together with other caching mechanisms, and in some cases, it can cause problems when developing user flows of higher complexity. In EcDev Studio we can make a custom caching configuration that provides a pretty higher speed increase than such a global cache. This is a primary reason why we don't recommend managed WordPress web hosting to any of our clients.
Type 3. Cloud server
Before talking about cloud servers I want to mention such hosting types as VPS (Virtual Private Server) and Dedicated Server. They are advanced hosting types and they offer isolated resource allocation. When you purchase hosting, the initial configuration and launch of the server instance are handled by hosting company staff, and the hardware configuration is fixed. VPS and classic dedicated servers we consider outdated hosting types and I will not describe them in detail in this article.
The cloud is a network of connected hardware with the ability to quickly set up server instances, change their configuration on the fly, or destroy them. Unlike VPS and dedicated servers, with cloud server instances all the operations are performed without human staff involvement. For example, it is possible to change RAM, CPU, and SSD storage with just a few clicks without contacting customer support.
The cloud server is an advanced and recommended approach to hosting websites. There are such popular cloud server providers as AWS (Amazon Web Services), Google Cloud, Microsoft Azure, Heroku, and Digital Ocean. In EcDev Studio our preferred provider is AWS so in this article I will provide an in-detail guide on how to host a WordPress site on AWS without previous knowledge of cloud administration.
Advantages of cloud servers:
- Infrastructure is backed by a large company.
- Easy and fast setup in a few clicks.
- Relatively high overall performance and stability of the cloud server instance.
- You are able to choose the exact hardware resources you pay for.
- You can pay $30-$80 per month for the average resources and host an unlimited amount of websites. Of course, you should care if the allocated server resources are enough for your needs.
Disadvantages of cloud servers:
- Together with total freedom, it usually requires higher skills in order to administrate the server instances. Administration tasks can be simplified in case of using options with a preinstalled web panel like cPanel.
- You need to have basic Linux skills in order to connect to the server and check the disk usage, as well as RAM/CPU usage.
How to install AWS hosting for WordPress with preinstalled cPanel
In this guide, we will launch the AWS EC2 instance of class t3.small. AWS EC2 is an on-demand computing service based on the AWS cloud platform, that allows you to create server instances quickly and scale them as needed. The total approximate price in the us-west-2 region (Oregon) is $30.96 per month. I say approximate because billing is calculated on an hourly basis. Later, you will be able to scale your server to a higher plan according to your needs based on the expected number of hosted websites, traffic, etc.
Here is what's inside the t3.small package:
- 2 X CPU Intel Xeon 3.1 GHz.
- 2 GB memory.
- 20 GB SSD disk space.
In this guide, I will show how to create a server with cPanel, however, in the real case, you will be able to use a free CentOS Web Panel instead of a poplar cPanel, but in that case you'll need to manually install it on the server via SSH. Below is a step-by-step instruction for setting up an AWS EC2 instance with preinstalled cPanel.
Part 1. Creating EC2 instance
Step 1. Log in AWS console, and switch to the right region.
Step 2. Enter EC2 in the search, and click on the corresponding service.
Step 3. Click on “Launch instance” and choose “Launch instance”
Step 4. Set the server instance name, for example, "WordPress Web Server"
Step 5. In the search enter “cPanel&WHM for Linux” and press Enter
Step 6. In the tab “AWS Marketplace AMIs” select “cPanel&WHM for Linux” By cPanel
Step 7. Click “Continue”
Step 8. Click “Confirm Changes”
Step 9. Leave “t3.smal” in the Instance type field
Step 10. Click on “Create new key pair” to create a new SSH key.
Step 11. Enter a key name and click ”Create key pair”. You should download the key pair and save it on a local computer. You need it to access the server instance via SSH.
Step 12. Leave the default Network settings.
Step 13. For the storage, you can either leave the default 20Gb or make it higher.
Step 14. Click “Launch instance”.
Step 15. Click “View all instances”.
Step 16. Select the newly created server.
Step 17. Open the Security tab and click on the security group that is created by default. You will see the security group settings at the bottom.
Step 18. Add the following rules:
- 22 - for SSH access.
- 2083 - for cPanel access.
- 2087 - for WHM access.
It should be the same as in the screenshot below.
Step 19. Click “Save rules”.
Step 20. Go to the Elastic IPs section.
Step 21. Click “Allocate Elastic IP address”
Step 22. Click “Add new tag”, add tag “Name”, and click “Allocate”
Step 23. Select the newly created IP address, copy the “Allocated IPv4 address” value, and save it locally (you will need it for further server access via SSH). Then click Actions >> Associate Elastic IP address.
Step 24. On the next screen choose the server and click “Associate”
We completed steps 20-24 to set the static IP address for the server. Otherwise, the IP address would change with every restart of a server instance.
Part 2. Configuring cPanel
Step 25. Launch SSH terminal. If you use Windows OS it can be a Putty application.
Step 26. If you use a Linux-based OS you should grant the right permissions for the key. Use this command:
chmod 600 {path_to_private_key}
The key pair you have downloaded at step 11.
Step 27. Connect to the server via SSH in order to get the URL for accessing WHM (Web Host Manager). Use this command if you use a Linux-based OS:
ssh centos@{server_ip_address} -i {path_to_private_key}
Step 28. When you get the question “Are you sure you want to continue connecting (yes/no/[fingerprint])?“ you should type “yes” and press Enter.
Step 29. Connect to WHM using the URL that you get in a terminal.
Step 30. The browser will show the SSL error “Your connection is not private”. You should click “Advanced” and then “Proceed”.
To get rid of a warning, the SSL certificate should be installed for your cPanel instance, there is a lot of available information about that in public access.
Step 31. Accept the terms of usage for access to WHM and cPanel.
Step 32. Click “Log in”
Step 33. Create a new cPanel account or log in to your existing account.
Step 34. Enter the email address for receiving service notifications and click “Finish”.
Step 35. Set the root password. Click WHM >> Home >> Server Configuration >> Change Root Password
Step 36. Click WHM >> Home >> Networking Setup >> Change Hostname in order to change hostname. You can choose one from the list displayed on the right side.
Part 3. Adding the domain
Step 37. Create WHM account. Click WHM >> Home >> Account Functions >> Create a New Account
Step 38. Copy Name Servers from your WHM account and set them for your domain.
Step 39. Log in to cPanel. To do this you should go to WHM >> Home >> Account Information >> List Accounts, and click on the сPanel icon.
Step 40. On the new page, you should choose WordPress.
Step 41. Wait until WP installation finishes, and click on “Add content”.
Step 42. You will be able to fully control WordPress on the opened page, log in as a WP-admin, etc.
Сhoosing and configuring high availability WordPress hosting: Final Thoughts
There is a large room for improvement of the WordPress site and web hosting in order to achieve higher speed and availability. It is possible to use Docker container, setup automated deployment, move a database to the cloud and decouple it from the server instance, add CDN, make the headless architecture for WordPress, set up autoscaling, and make other improvements. Here in this article, I have covered just the basics, so users without much technical knowledge can start using the high-availability AWS cloud to host their WordPress websites.
In addition, consider hiring WordPress developers if you need assistance with the development, optimization, maintenance, or infrastructure changes to your WordPress website.