Linux Server Setup: Part 5 - Web Servers

Updated: September 02, 2010

There are a few key factors to consider when selecting a web server:

1. Performance - speed, load averages, and memory consumption

2. Stability and security

3. Scalability

4. Features

Some web servers are fast and lightweight but may not provide as many features. Others may offer a wide range of features but may not scale well. The following are web servers that work well in most situations and have proven to be reliable for small and large websites. They all have the basic features one would expect, like support for virtual servers and SSL (secure socket layer), as well as static and dynamic web pages. Additionally, each has its unique features that make it ideal for specific types of websites.

Apache (http://httpd.apache.org/) - Apache HTTP Server is a free and open source web server that is, by far, the most widely used and highly regarded on the market. More web servers run Apache than any other, including web servers that run on other operating systems, such as Microsoft's IIS.

One of the features of Apache that makes it a favorite is its ability to support modules, which essentially adds functionality to the core web server. On Linux servers, the administrator can install pre-compiled modules using the distribution's software repository.

Apache is free software released under the Apache License 2.0. It is available in binary form in most Linux repositories. It also runs on a multitude of Unix-like operating systems and Windows.

Ngnix (http://nginx.org/en/)- Pronounced "engine X", this lightweight web server is designed to support heavy loads and still serve high performance sites. Although it runs on far fewer servers than Apache, it runs on a significant number of high-load sites.

Ngnix features load balancing, fault tolerance, gzip compression, and the ability to handle more than 10,000 simultaneous connections. It is free and open source software, released under a 2-clause BSD-like license. It supports FreeBSD, Linux, Solaris, Mac OS X, and Windows.

Lighttpd (http://www.lighttpd.net/) - Another light web server, Lighttpd (pronounced lighty), has a very low memory footprint, small CPU load, and has the ability to take on numerous requests (over 10,000 simultaneous connections) without putting a heavy load on the CPU and RAM.

Because of its lightness and ability to perform well serving high-volume sites, it has drawn the attention of major online ventures, including YouTube, Wikipedia, and Meebo, all of which use Lighttpd on their servers. One of the web server's selling points is its "event-driven architecture", which supports multiple parallel connections, something essential for AJAX-based web applications (i.e. Web 2.0).

Lighttpd is free and open source software released under the revised BSD license.

In addition to these three free and open source options, there are a myriad of other specialized and proprietary commercial web servers on the market, such as Zeus Web Server, Oracle HTTP Server, LightSpeed, and IBM HTTP Server. Although they are less popular, they may be of use to you to fill specifc needs.

Web Server Technology

A web server will typically run as a daemon (system service) under a single application process. That initial process will then spawn child processes that handle virtual servers, individual websites, or even individual requests. As such, a web server could spawn hundreds or even thousands of processes per day, per hour, or even per minute.

For security, child processes normally run as unprivileged users (i.e. nobody) to prevent hackers from gaining access to the server operating system through a back door in the web server. Dynamic web applications can also serve as an added security risk, so a web server may run scripting modules as separate CGI programs, rather than as part of the web server itself.

SSL and TLS are standard on all web servers and facilitate the use of secure transactions via the HTTPS protocol.

Web servers use compression to speed up requests and serve web pages and content using less bandwidth. Gzip compression is a standard method of delivering compressed data.

The standard HTTP port for web servers is port 80, and the standard port for HTTPS is 443; however, most web servers can be configured to run on virtually any port.

A web server can operate a single site on a single IP address (dedicated hosting), multiple sites on a single IP address (shared hosting), or multiple web sites on multiple IP addresses. Through virtualization, it is also possible to run completely independent instances of web server software on the same server.

A web application is actually a web script, series of scripts, or backend program combined with frontend scripts, that runs on top of a web server. Therefore, a web server can run as many web applications as the software and system hardware will support, which is what makes cloud computing attractive to many organizations.