Apache is an offspring of the NCSA httpd web server designed and implemented by Rob McCool. He made the NCSA server as the web server market was dominated by complex and heavyweight server systems. Many people wanted a simple and small server that would be adequate for the needs of a simple web site. However Rob McCool was not able to continue his work on the NCSA server due to work commitments. He left the project and abandoned the server. At that stage a lot of people were already using the NCSA server. As with any software system, a lot of people patched the server to suit their own demands and to get rid of bugs. In 1995 Brian Behlendorf started to collect those patches and extensions and founded a mailing list that was solely used for that purpose of exchanging. A group of 8 people that formed that mailing list community released the very first version of Apache. Due to its nature of consisting of patches and extensions to the NCSA server, the name Apache is actually a derivate of "a patchy server".
The first version that was released by the mailing list was version 0.6.2. One member of the growing group of developers, Robert Thau, designed a new server architecture that was introduced with version 0.8.8. On December 1st in 1995, Apache version 1.0 was released and only took a year to become more popular and more widely used than the older and formerly popular NCSA server.
During the next years the group began to grow and Apache received many new features and was ported to different operating systems.
In 1999 the group founded the Apache Software Foundation to form a non-profit company. In March 2000 the ApacheCon, a conference for Apache developers, was held for the first time.
On the ApacheCon conference in March 2000, Apache version 2.0 Alpha 1 was introduced to the public. The version 2 of Apache again introduced a complete redesign of the server architecture. Apache 2.0 is easier to port to different operating systems and is considered so modular that it does not even have to be used as a web server. By designing appropriate modules the Apache 2.0 core could be used to implement any imaginable network server.
Today both versions of Apache, version 1.3 and version 2.0 exist. Even though people are encouraged to use the newer version many still use version 1.3 which is still being further developed and supported.
For more information on Apache history see the Apache History Project's website at http://www.apache.org/history/.
Both versions of Apache used today form the biggest share of the web server market. Even though the fact that Apache is free is an influencing fact, the main reason for Apache's success is its broad range of functionality.
Apache is a server that supports concurrency and can therefore serve a big number of clients. The number of clients that can be served concurrently is limited only by the underlying hardware and operating system. The server can be easily configured by editing text files or using one of the many GUIs that are available to manage these. The server can be reconfigured without having to stop the server. Due to its modularity, many features that are necessary within special application domains can be implemented as add-on modules and plugged into the server. To support that, a well documented API is available for module developers. Its modularity and the existence of many free add-on modules makes it easy to build a powerful web server without having to extend the server code. Using many of the available server based scripting languages, web based applications can be developed easily. When using scripting languages or add-on modules Apache can even work with other server applications like databases or application servers. Therefore Apache can be used in common multi-tier scenarios. Additionally Apache is completely HTTP 1.1 compliant in both of the current versions. The installation is easy and ports for many popular platforms are available.
The block diagram in figure 3.1 shows an Apache HTTP Server in its environment. In comparison to the simple HTTP Server system shown in figure 2.1, we see a administrator, configuration by files and server extensions using CGI or or the Server API. These extensions (Information processor and provider) can access any resources at the server machine or via network at any remote machine.
|Apache Modeling Portal