Apache HTTP Server

From Citizendium
Jump to navigation Jump to search
This article is developing and not approved.
Main Article
Related Articles  [?]
Bibliography  [?]
External Links  [?]
Citable Version  [?]
This editable Main Article is under development and subject to a disclaimer.
The Apache "feather" logo

The Apache HTTP Server is one of the first World Wide Web servers to gain popularity on the Internet. The explosive growth of the Web can be directly correlated with Apache's growth, due primarily to its popularity as a free, open source project. The Apache HTTP Server project itself is now "held up" as another example of a success in open source software, much the same as the operating system Linux has been.

Apache can be run on a variety of platforms: various Unix and Unix like systems, Microsoft Windows, Novell NetWare, Mac OS X and other operating systems.


When first released, Apache was the only viable free/open source alternative to the Netscape Communications Corporation web server (currently known as Sun Java System Web Server). It has since evolved to rival other Unix-based web servers in terms of functionality and performance. Since April 1996, Apache has been the most popular HTTP server on the World Wide Web; as of March 2007 Apache served 58% of all websites.[1]

The Apache HTTP Server Project started on a Mailinglist created by Brian Behlendorf which purpose was to exchange patches and support for the NCSA HTTPd.[2] At this point the NCSA did no longer maintain their webserver project and some developers meet each other on that list. They called themselves the Apache Group and founded later on the Apache Software Foundation which currently takes care of the project.

Apache's Architecture

The 1.x Branch

note: you can help! Please add to this section

The 2.0 Branch

The 2.0 branch of Apache was a major step forward in terms of its architecture and development system, across every platform that Apache ran on at the time. Specific performance issues were addressed, and will be discussed below.

Version 2.0 finally brought true POSIX multithreading to the Unix platforms, improving scalability.[3] Better support for non-Unix platforms was also addressed, by using a new concept where the "engine" of Apache was now modular, and is able to be chosen when Apache is compiled. These "Multi-Processing Modules" (MPMs) are responsible for binding to network ports on the machine, accepting requests, and dispatching children to handle the requests. [4] This vastly improved Apache's performance and stability on non-Unix platforms because it allowed operating system-specific MPMs to be built without adherence to specific standards, such as POSIX. On some operating systems (such as Windows NT) the previous model which used the native POSIX layer hindered performance significantly.

The build system was also rewritten from scratch to be based on the popular build tools autoconf and libtool. Instead of a custom build process, Apache's configuration and compilation was now much more similar to that of other common Unix programs.[3]

The current 2.2 Branch