Introduction
This guide will explain in plain English some key hosting terms and technologies that Nublue uses.
Nginx
NGINX is a web server used in all of our hosting products. It runs in front of the Apache web server dealing with specific end user requests to websites. Apache is a very robust web server that can process many types of request sent to it - from images, JavaScript and complex web page files. NGINX runs in front of Apache to handle some of these requests.
NGINX acts as an assistant to deal with certain types of content. It then hands off anything it can’t handle to Apache, to make sure Apache isn’t overloaded with requests and has less to deal with.
NGINX is highly efficient at handling “static content”. Examples of static content include static html files, JavaScript and images. These are easier to process and NGINX can group many of these together, which leaves more CPU and RAM available for Apache to handle the more complex requests, such as PHP.
Why not just use Apache?
Apache is a solid web server which can deal with many different types of request. However, Apache will handle each server request individually, no matter what is asked of it.
NGINX can group simpler requests together and leave Apache to deal with complex tasks which helps improve the speed of your website. Working together, Apache can deal with its workload faster as it has less to deal with alongside NGINX’s already speedy processing of the lighter requests.
The combination of Apache and NGINX should save CPU and memory. This makes them a match made in server heaven.
MariaDB
MariaDB is a database engine, first released in 2009. It’s an open-source fork of the MySQL database management system, designed as a drop-in replacement for MySQL in the LAMP software stack (Linux, Apache, MySQL and PHP), and is generally replacing MySQL in modern operating systems.
What differentiates MariaDB from MySQL is its more open-source development, which has allowed it to grow faster and with more new major features in each update than MySQL. While MySQL has wider distribution and simpler installation, MariaDB provides greater flexibility, improved performance and more features than can be found in MySQL.
What does Maria DB let me do?
Almost all web applications you’ll use need some kind of database service to store data about things like products, orders, blog posts and comments, which is known as ‘transient’ data. This data is served more effectively using a database service like MariaDB, rather than through storage in flat files, because it makes the data easier to access, edit and work with.
MariaDB provides the database service for web applications hosted with Nublue. A database service is a necessary part of every major web application that can be hosted with Nublue, including Magento, Magento 2, Wordpress, Drupal, and Joomla.
While MySQL is the standard database service for PHP web applications, we instead chose MariaDB because of its additional speed, expanded development rate, more responsive bug fix program and open-source principles. MariaDB is also the default database server in Red Hat Linux 7, although we use a newer iteration.
Benefits of using MariaDB
Essentially MariaDB gives you all the benefits of MySQL plus added extras, so it’s a win-win! Its benefits include:
- Improved speed
- Multi-source replication
- Greater number of storage engines
- Storage-engine-specific Create Table
- Fewer bugs and compiler warnings
- More comprehensive testing suite
- Test builds with various configure options
- Ability to remove invalid tests
One of MariaDB’s great advantages is its open-source development. All of its development actions are publicised on a public mailing list; all new patches are developed with full transparency and the software has a relatively high number of contributors compared with MySQL. MariaDB’s contributors are also highly active in its administration and documentation, making it likely that the software will be consistently well maintained.
Since MariaDB is an offshoot of MySQL (and a drop-in replacement for it) it aims for full-feature compatibility with MySQL, as well as other MySQL variants (or ‘forks’). Because MariaDB is built from a fully forked code base, it doesn’t take a specific version of MySQL and apply its patches, but instead builds in the features that MySQL provides into its own code.
MariaDB’s community are known for their commitment and attention to detail, so security releases tend to be fast, transparent and well documented in its comprehensive knowledge base. New features are reviewed in-depth before release, and released earlier than those in MySQL. MariaDB also offers a greater number of storage engines than MySQL, better performance benchmarks by comparison, and is easy to run as a full drop-in replacement.
MariaDB also has the immeasurable benefit of being preferred by some of the biggest names online, which has further boosted its popularity. It’s now the database service of choice for Google, Wikipedia, Craigslist and booking.com, as well as one of the key sponsors of the MariaDB Foundation, Automattic – the brand behind WordPress.
CloudLinux
CloudLinux is a Linux-based operating system for shared hosting, first released in 2010. It creates a wall around individual sites hosted on the same shared server, which prevents these sites from exceeding their resources or having a negative impact on other users’ website performance as a result.
CloudLinux is derived from Red Hat Enterprise Linux, which it modifies and extends specifically for use with shared hosting environments. CloudLinux provides its own kernel (the core ‘middle man’ between applications and hardware data processes) based on the OpenVZ kernel, plus a number of supporting packages which implement and support the resource isolation it provides. Memory, CPU and a number of web server connections can all be manipulated within CloudLinux.
What does CloudLinux let us do?
CloudLinux helps to make sure our shared servers are stable, and that our shared hosting clients are protected against slowdown, downtime and resource spikes which could be caused by other clients sharing the same server.
It lets us partition resources in our shared servers, so that a resource-hungry website can’t slow down or crash other websites on the same server. CloudLinux gives us close control of our shared servers’ resources to ensure we provide the best performance for all our shared hosting clients. Any client website which uses more than its allotted resource limit is kept isolated and their resource usage is ‘throttled’ by CloudLinux, which prevents any knock-on effects of this data overage for other users on the same server.
Without a service like CloudLinux, having multiple tenant websites on a single shared server could result in site slowdown or even crashes, if one website uses more than its agreed resources on the server. CloudLinux helps to ensure that our shared hosting remains stable and performing at its best for our clients.
Essentially, CloudLinux lets you enjoy your shared hosting secure in the knowledge that one (or more) greedy websites you share a server with can’t impact your own site’s performance. It means that if a particular website expends its resources it will begin to slow down, and stop working until its level of resource usage reduces to within its limits. If this happens regularly with a particular client then we will contact them to advise them on a new hosting package with more suitable resource for their website. However, all other clients on the same shared server will be unaffected by the stoppage and will run as usual.
CloudLinux also walls off each user in their own virtualised file system using CageFS and SecureLinks, so that even if a client is hacked, the hacker will be unable to see any other user on the same shared server – or their sensitive information.
When do Nublue use CloudLinux?
We’ve used CloudLinux on our shared hosting platform since 2012, and we and our clients have benefited from the stability and performance it provides. We also include CloudLinux as a standard feature on our newest range of dedicated servers because CloudLinux is invaluable for preventing development work from impacting the performance of live sites where the sites are sharing the same server. We strongly recommend the use of CloudLinux where clients are reselling hosting to others, as a means of protecting their individual clients from the resource usage of others on the same shared servers.
The CloudLinux OS is also especially useful for our clients running websites on the WordPress and Joomla platforms, since its OptimumCache feature can optimise file caching by removing the need to read duplicate site files.
Without CloudLinux we wouldn’t have the same high degree of control over client websites’ resource usage on our shared servers. For example, we’d be unable to set specific limits for CPU and RAM usage by our shared clients, and it could take a long time to pinpoint problematic accounts causing issues over resource usage on a shared server which hosts many clients.
Additional benefits of CloudLinux
- CloudLinux provides control panel integration with Plesk, allowing historical graphing of resource usage for each shared hosting client
- Its Mod_Isapi feature serves PHP quickly and more reliably by using less memory.
- The MySQL Governor feature allows our system admins to monitor and manage MySQL usage in real time, and limits overages to stop overactive websites from overloading a whole server.
- CloudLinux is based on the OpenVZ kernel, but also includes a range of additional functions. Notably these functions include a separate Lightweight Virtual Environment, with its own memory, CPU, IO and IOPS.
- CloudLinux also provides HardenedPHP in multiple versions, which patches vulnerabilities in older versions and makes unsupported versions secure.
- The cldeploy script is used to switch hosted clients to the CloudLinux OS. This installs the CloudLinux kernel and some lightweight virtual environment packages.
- CloudLinux is often preferred for the high level of stability it provides with shared hosting, isolating each tenant on a shared server into a lightweight virtualised environment (LVE).
- This LVE shares out and walls off memory, CPU and connections for each client on a shared server, and prevents any one client using more than their allocated resources. If a hosted website on a shared server sees a spike in traffic, or starts to use a lot of memory or CPU, only that individual LVE will be slowed down by the resource drain – not the entire server – preventing the server from going down. The result is faster, higher-performance hosting for all of our shared clients.
- CloudLinux cites significant improvements in performance on servers using their OS, including a threefold drop in server reboots, a sixfold reduction in customer suspensions and 70% fewer tickets for issues related with server performance – as well as 20-30% reductions in server load.