When you start a project on the Internet, one of the first questions you ask yourself is the hosting for your website. We should actually ask ourselves more questions, especially if we ask ourselves how far we want to go with our project.
These first decisions will be crucial for the rest of the project to work well. Some questions we have to raise is whether our site will simply have information, whether it will have transactions (commercial, for example), whether it will be multi-country or multi-language, whether our users will be mainly local (country) or international. Each of these questions requires a series of options, and all the options have to give you an answer to what you need.
NOTE: This article is updated as of August 2019, so reference is made to versions and products available at this date. It is likely that when you read this, there will be more up-to-date things, so keep your systems up to date.
One of the phrases that you have heard me say the most is that to do things on the Internet, you have to know about the Internet. And starting from this premise, you have to know one thing about the Internet: each “thing” is a different service. The domain, the DNS, the mail, the web, the database… each of these elements can be managed separately or together.
Like, I guess you want to have a rewarding project that works. If this is the case, and you want stability, you have to invest some money. How much? A good friend of mine always said that you have to invest at least 3% of your turnover in technology (mainly in infrastructure in the case of Internet projects).
And perhaps the main question: do you know or don’t you know about systems? I assume that 95% of the population does not know about systems, so they are looking for something easy because they want to avoid complicating it. Hosting is like renting a place to set up a store, or looking for a flat to buy or rent. You may know how to change a plug or hang a painting, but if you have to reform the entire kitchen, you have to paint everything or change the plumbing, you do not do it. That’s where the System Administrators come in. If you are going to set something up seriously, you need someone on the team (or outside) to take care of it: a control panel helps you, but does not give you optimal solutions.
I’m not going to give it much thought because this is not what I come to talk about. If you have no idea, the summary is to have everything in one place. It’s the worst, but it will work. This is that the domain, DNS, mail and hosting are all in one place. Probably that provider will give you a shared hosting with a cPanel from which to manage everything. With a little luck, that provider only (and when I say it’s only) offers WordPress, so that PHP, Web, and Database services will be optimized for WordPress. Any you know? None. All shared hosting companies host any type of project, so although WordPress hosting is offered, it is not usually true, it is a hosting in which you can put anything.
A little more seriously
Okay, if you want to dare to go a little more seriously, you can start by separating some services.
Let’s start at the beginning, the domain. For these cases, you always have to go to an official registrar. In general, you will not use any added service, simply to register and manage the domain, so the best thing is something simple and clear. My main option is in DonDominio. A domain can cost you about 10-12 euros/year.
For a domain to work, the next thing you need is DNS. For this, there are several options, but if you want something powerful, you have to go to something powerful. In this case, I would recommend two options, one of them initially free and the other not (but very cheap). One option is Hurricane Electric which has its own DNS service and is very powerful; they are people who have been working with networks or IPv6 for many years. A second option is Amazon Route53 which, although it is a paid service that usually costs around 1-5 euros / month per domain, has some interesting features for future use (especially if you are going to have large or distributed systems).
Finally, there is the issue of mail. At this point, it is necessary to differentiate the sending systems from the receiving ones.
To receive mail, if you are going to do something in professional mode, it is advisable to use a Google Suite or a Microsoft 365. In these cases, you have to create email accounts exclusively for people and never accounts of type “info@”, “marketing@”… For these types of accounts that many people have to access, you need a ticket system, a customer service system. For this, there are services such as Zendesk, Freshdesk or similar. This means that you will more or less pay 5 euros/month per email account, and then between 0 and 20 euros/month per agent for support.
For sending mail, it is best to use a professional SMTP service. This way you will not have any validation or spam problems, but you will have to pay for each email sent. Some services offer you a minimum of free mail per month. For these cases, you have options such as Elasticemail or Amazon SES. In any case, these services will force you to verify the mail, which is what makes it work without problem.
Let’s go for the web
On WordPress, when we talk about the web we talk about 3 elements: PHP, Database and Web Server. These are the three elements that make a WordPress work and that we have to maintain frequently so that they do not become obsolete. As the software evolves, we have to maintain the services.
As WordPress evolves, it is best to keep up with these three services and their versions. For example, WordPress is making many efforts to make the software compatible with the versions that PHP is supported and leave behind obsolete versions. In the case of databases, WordPress uses a standard SQL, so actually using one database system or another will not affect much, or that it is new or obsolete. The difference will be that a new database engine will be much more powerful in terms of performance, so keeping the database up to date is also a good idea. With web servers for the same, many novelties are appearing in terms of HTTP (2 and 3) that browsers support, so the more modern it is, the more speed and optimized communication with the end user will be.
If we go to the specific detail of PHP versions, today the optimal thing is to have PHP 7.2 or PHP 7.3. At the end of 2019 PHP 7.4 will come out and WordPress is expected to support it. If you use plugins, check the tab for plugins that work with a minimum supported version. It is not necessary to go to the latest version of PHP, but to a supported one, and PHP always maintains 3 versions, one with security patches and two with new functionalities. You may not want to go to the latest one, but every year you should upload one or two versions.
For this, it is important to have a development or test environment. You can back up the entire site except for example the “uploads” (the folder where the images are and that) and test that your plugins work correctly when there are new versions. Although it is an obsolete version of the site in terms of content, it is highly recommended to keep a functional copy in which to test and test when new versions appear.
Keep in mind that each version of PHP has new features, both with new elements and with elements that are being eliminated. For example, one of the best known and that affects a lot is the elimination of the mcrypt functions that gave way to the sodium. This change is critical for security and makes all versions before PHP 7.1 insecure.
On the other hand, we must bear in mind that PHP is not only PHP, but it has many extensions. For example, one that yes or yes, you have to have installed is the one that allows you to connect PHP with MySQL (it serves for any type of database of that style). Or, for example, the GD extension to be able to generate the thumbnails of the images. Or for example, the Opcaché extension, to optimize performance and activate one of the WordPress cache layers as far as code speed is concerned. Although WordPress requires very few extensions, plugins and themes may require some more, so it is highly recommended to have those that are necessary for proper functioning. You also don’t have to install them all, as it will make WordPress run slow. In general, shared hosting gives you a series of extensions that make everything work, but if you set up your infrastructure you must select according to the operating system, version, and requirements of your project. For example, if you are going to work with dates or calendars, the calendar extension will be very useful since your plugin will probably use it.
Never assume that your hosting has the extensions correctly. Ask and ask that you install the ones you really need to make everything flow.
WordPress works with MySQL or any of its forks, among which are MariaDB or Percona. Any of these systems works well, so here already enter certain more specific elements of each project. MySQL is part of Oracle, and it seems that the latest versions are no longer what they were, which make it not as optimal as it seems. For that, we could choose Percona as an alternative system that takes the open-source base of Oracle and applies its optimizations, or directly we go to MariaDB that little by little is becoming a completely different software.
In any case, as I said before, in terms of databases it is best to go to the latest version. Nor do you have to run when a new major version appears, but if we are in version 10.2.10 and there is already 10.3.2 (which means that it already has a little shooting) we could make the approach of leveling up, since each version usually increases between 10% and 30% the previous performance.
Databases are an element that has little maneuver in terms of an end user, since the configuration is usually in the my.cnf to which only the hosting provider has access. If you have a project in which the database consumption is high or requires many cross-queries, such as a store with WooCommerce with many variable products, you will need to optimize the configuration a lot, and in a personalized way, analyzing the size of the tables, the indexes… something that a shared hosting will never be able to offer you.
Redis / memcached
Other databases that WordPress may require if you want things to go much lighter is a system with Redis or with memcached. Personally, I prefer Redis. These are not required by WordPress itself, but are very useful for activating some system cache layers. For example, the object cache layer that allows you to cache certain SQL queries, which makes MySQL cache and therefore takes weight off recurring queries.
In general, shared hosting does not have this, although some do. If you want to do a little optimization, check that your provider offers you any of these systems and how you can take advantage of it, which is usually with a general cache plugin , or with a specific one for these technologies.
There are many web servers, although mainly I use one of the three best known: Apache HTTPD, nginx or LiteSpeed Web Server. Each of them has its advantages and disadvantages. A classic in them is for example the use of .htaccess since Apache or LiteSpeed use it and allow anyone to make configurations on the server from the FTP itself, and instead nginx does not. This causes everyone to load the configurations differently and that affects the performance.
For me, the choice of a web server or another is usually closely related to the management of the WordPress cache. WordPress always has to be accompanied by the different layers of possible and existing cache since without them, it simply does not scale, and in this, the web server has a lot to say.
It depends on the projects and cache settings I use nginx or LiteSpeed. The nginx option is usually because the system is distributed or there are cache layers above the system (Varnish type or a CDN) and the case of LiteSpeed when the system is more own. The interesting thing about LiteSpeed is that it has its LiteSpeed Caché plugin that manages the cache quite well without needing many infrastructure or system stories, so at the intermediate level it is a great option. Keep in mind that depending on what size your site is, LiteSpeed is paid, but in general, it is much better than simply Apache, which I do not usually recommend.
The nginx option implies that if you want to make some specific changes in the configurations you have to do them through a configuration file, so you will need someone who knows how to configure and manage it.
Which hosting to choose?
To start a little clarity on the matter, and put some swear words on the table, and is that you have to differentiate between “types of hosting”: shared hosting, dedicated hosting, VPS, Cloud…
Types of accommodation
Shared hosting is like living in an apartment within an apartment building. Everyone shares some things (electricity, water, elevator…) but with some limitations… for example, you can grow the storage room or parking, but it is difficult to grow the apartment itself as it is limited.
A dedicated hosting is to have your building, since you own the skeleton of the building. This allows you to divide it as you want or give it the use you want… of course, global resources are what they are. If the building has three floors and a basement, if you want to make it grow you may have to stop everything, do works, ask for permits and, eventually, it has certain limitations.
A VPS or virtual private server would be like living in a campsite in your caravan. Theoretically, you are always in the same campsite, although you can decide the size of the bungalow or your motor home. You can decide if it has more rooms or less, but you are limited to what that campsite can offer you. You could get to get the whole campsite, although it will not be cheap.
And to finish the Cloud, which would be like a hotel chain. This hotel chain has several hotels in the city, has single rooms, doubles, suites… when you check in they give you a room, which you can expand as you need, but considering that they can change the room unexpected, and they can even change your hotel. Of course, you always enter through the same door, and magically you are in one place or another without knowing how you got there (and the truth is that you do not care, as long as there is a comfortable bed where you can rest).
These hostings, at the price level, surely go in the order of shared hosting (cheaper), VPS (relatively cheap) and later dedicated hosting or the Cloud, where prices will vary depending on the resources (CPU, RAM, disk…) that are necessary.
In general, you also have to consider whether the hosting is managed or unmanaged. This is like having a landlord, who is responsible or not for the maintenance of your apartment, building or whatever. In general, as in apartment buildings where there is usually a landlord, shared hosting is usually managed and managed, so you do not have to worry much, only your things. The same would happen with the Cloud and the rooms of a hotel, where there is often room service. In the case of dedicated hosting or VPS everything is much more self-managed, since if you have your own building you are your own landlord, or if you live in a campsite, the campsite offers you some basic services, so you can connect (electricity, water…) but you have to manage yourself. In any case, you could always hire a third party, a systems administrator, to take care of those things.
My project, my accommodation
Depending on the project you have, you will need one type of arrangement or another. For example, if you have a blog or a site without much complexity (few plugins, a simple theme) in a good and optimized shared hosting you can get peaks of 10,000 visits / hour without disheveling, but the hosting must have very well-thought-out elements for WordPress. The normal thing is that a shared hosting lasts about 25,000 visits / day if the WordPress is optimized and simple. For example, my blog or personal page is on shared hosting because they don’t need more. If you have a larger site or with more traffic (even a network of blogs) we already talk about leveling up and most likely you will have to go to a VPS.
When we go to a multi-language site, things get complicated. If you use a plugin like WPML, a shared hosting will drown, since that configuration consumes many resources and will make WordPress go slow and bad. In these cases, you can consider for a project such as a corporate website in several languages the use of a shared hosting with a WordPress Multisite. But little else.
If we already go to an e-commerce, for example with WooCommerce, the system will depend more on how optimized it is. If you have little traffic (less than 10,000 visits / day) in a shared hosting, you can get to work correctly, but it will not scale. If the trade is serious, if you invest in advertising, you will surely need to mount at least one VPS, even two (one for the web and PHP, and one for database). If a simple WooCommerce is mounted well it can work well on a VPS of 4 CPU, 8 GB of RAM and 80 GB of disk, and we are talking about 50 euros / month. In any case, if you are already at this level, it is more than necessary for a system administrator to mount everything correctly and do the necessary maintenance, which may involve investing 100 euros / month more in this service. Yes, systems administration can be much more expensive than hosting itself.
The problem with WooCommerce is when you get multi-country or multi-language and do it with a WPML. In these cases, for example, we have made the decision not to simply take it as a client because it is a basket case. If you are going to sell and choose that option you are dead, that project must be thrown away. Another option is to mount it with a WordPress Multisite + MultilingualPress, where it is much easier to scale and make it work, since everything becomes much more normal and standard.
In any case, the big difference and key moment is to know when you need someone who knows WordPress (and I’m not talking about those people who install a WPO optimization plugin to compress the CSS and JS, or who puts you a couple of cache plugins) since there are background things, to enter by console (the screen is black that the hackers of the movies use and write very fast) and adjust the system directly.
Another important thing is to have a plan B. Recently there was a storm in Barcelona, and it has caused the data center where part of our infrastructure is to go out of light. It is something very rare and difficult to happen, but thunderstorms are what they have that lightning strikes, and you are scorched by an electric generator and the light goes out. In these cases, how long are you willing to make your project not work? Well, for example, this site was 3 days without working because of this, and personally as I know that it was being worked on because the concern was zero. Do I have plan B for these cases? No, because I don’t need it.
But imagine that you have a blog with a lot of traffic and many visits and that you earn money with it, or I am going to something clearer, that you have a WooCommerce where you sell your products, and you have it in a shared hosting… do you know that if a hard drive breaks down you can be hours without working or having access? Here if you want a plan B and that plan B is called Disaster Recovery. I think the name is clear, and it is a system to recover from a disaster, such as the one I have mentioned. If I had hired something in this mode, it is likely that in just a few hours I would have been able to be online again. It is not an automatic system, but it can allow you to have a copy of your site quite updated and be able to retrieve information in a few hours. And this is not a backup, since in reality a Disaster Recovery has to be physically in another data center (and usually in another city). For example, ours are between Barcelona and Madrid respectively from each other, and we even have some in Paris.
Normally, the price of a disaster recovery system is double the price of the infrastructure you have, since basically, what is there is the same in two places at once, with a copy of the changes every N hours, and if the usual one stops working, the alternative system is manually lifted.
Although undoubtedly, the key element in case of having an important business (and here I return to what I said at the beginning of investing 3%) is the high availability system. If you have an e-commerce, a means of communication or something that requires to be 99.99999% of the time online (come on, it is almost impossible for the web to stop working) what you need is this high availability.
Although this may seem simple to assemble, it is not. Unlike the recovery system where you have a hidden copy of the system that is synchronized every N time, a high availability system implies having the same functional system in real time in several locations at once.
The biggest problem lies in two points: having the same files in all systems at once, and having the same data in the database at the same time. And this is not as simple to assemble as it may seem. In addition, as far as databases are concerned, they have to be in at least 3 locations if you really want to have high availability, which complicates things even more.
How much does it cost to maintain this? Well, less than it seems, although it depends a lot on the resources and the size of the data that is used. To begin with, you have to multiply the infrastructure by 3, in 3 different locations (so that it makes some sense) although you can do some things well-thought-out and with a little intelligence in the network.
Conclusion and summary
First, if you have arrived here, congratulations! This document is very extensive, but wants to show the complexity when it comes to assembling and scaling a WordPress. And it seems like a simple task, but it is not.
As you can see when we talk about hosting for a WordPress, we are talking from hosting of 5 euros / month to 500 euros / month quietly, although the limit is in the needs of your project. Of course, do not think that if you spend 5 euros / month you will have a service that makes a store in many languages and that sells to many countries work well because there may be exceptions, but it is far from normal. And another thing, before setting up a WordPress, consult someone who really knows about WordPress because there is a lot of smoke selling (anyone who recommends WPML falls into that bag, for example).
In any case, if you have any questions, you can leave a comment or write to me by mail and I will assist you as best I can to help you when choosing a type of arrangement according to the project you are going to launch.
NOTE: Before anyone is thrown at me, for the record, I have nothing against WPML even if it may seem so. This plugin works great for several things, but not for others, and is generally used for what it shouldn’t be used for.
About this document
This document is regulated by the EUPL v1.2 license, published in WP SysAdmin and created by Javier Casares. Please, if you use this content in your website, your presentation or any material you distribute, remember to mention this site or its author, and having to put the material you create under EUPL license.