Apache 2.0: The latest version of the predominant open source Web server
Released in April 2002, Apache 2.0 has slowly gained acceptance as the preferred version of the predominant open source Web server. Michael Hall takes a look at what has changed.
It’s hard to argue with the fact that Apache has grown up with the Web. By virtue of its place as the Web server of choice for several years, Apache has defined and reflected the potential and capacity of the medium.
That is to say, despite its pre-eminent role in shaping the Web of today, Apache hasn’t been without its share of issues. As much as it was a reliable workhorse of a Web
server throughout its 1.x years, Apache lacked in areas that enabled less fully featured servers to claim niches it had no hope of filling.
Not anymore.
The Apache Project spent several years addressing many of Apache’s shortcomings and emerged from the process with a server that reflects the vast diversity in the hosts that constitute today’s Web and their varied needs.
Platform support has greatly improved between Apache 1.x and 2.0. Due to the Apache Portable Runtime (APR), the features (and failings) of any system Apache runs on are abstracted away from the core server, removing much of the need for workarounds and hacks needed to make Apache run at its best on a given platform. This has meant an increase in the number of supported platforms, as well, which now includes everything from common Unix variants and the Windows family to NetWare and OS/2.
Build and installation have gotten a little easier, too, due to reliance on the standard GNU Autoconf tool. With Apache 2.0, Windows users don’t have to worry about that, as the Apache project provides a Windows version with its own graphical installer.
On the configuration side, streamlining has removed confusing directives, but things remain centered around a text file that may prove daunting to users who prefer GUI configuration tools. Tools are available separate from the core package, such as ApacheConf,
for free or for a trivial sum and handle configuration in a simpler manner.
Once running, Apache 2.0 is a more capable, scalable performer than its predecessor. A hybrid threading/multiprocess model built to accommodate everything from the classic “commodity x86 running a small site” to “enterprise mainframes running multiple virtualized instances” provides the scalability Apache 1.3 lacks. This version
includes pluggable support for specific platforms and a few generic modules. Official support for IPv6 will give Apache 2.0 a leg up in the coming years as adoption of that standard spreads and support for HTTP1.1 enhances the performance of proxies.
Several modules have also been introduced to the core distribution that enhance security and management: mod_auth_ldap introduces LDAP-based authentication, mod_autoindex cleans up the way in which indexless directories are presented, and mod_deflate allows for content to be compressed before being pushed over the Internet, thus saving bandwidth.
The biggest drawback Apache 2.0 presented until recently was the relative instability of the APIs that drive module development. Until Apache 2.0.44, modules compiled for one release of Apache 2.0 would not necessarily work on later releases. This issue still turns up in dated reviews around the Web, but it’s been remedied with a stable and consistent API. Any remaining barriers to adoption are now primarily the modules from Apache 1.3 that have yet to be ported to Apache 2.0, a situation we believe will improve with the newly stable development platform.
The following chart illustrates the main differences between Apache 1.3 and Apache 2.0.
Feature
|
Apache 1.3
|
Apache 2.0
|
IPv6 | Unofficial Patches | Fully Supported |
Threading | Less-scalable multiprocess model | Enhanced to support several models for better scalability |
Build Configuration | APACI | GNU Autoconf |
Server Configuration | Streamlined to remove confusing directives | |
Platform Support | Limited and problematic | Expanded with APR |
Unicode Support | Poor on Windows | NT/XP Unicode enhanced |
Internationalization | Enhanced, multiple languages in error messages | |
HTTP Proxy Support | HTTP1.0 | HTTP1.1 |
Microsoft ISAPI | Not supported | Supported, with a few exceptions |
SSL Hardware Support | Unofficially supported | Supported through mod_ssl, which uses OpenSSL’s support |
Pros: More scalable due to enhancements to the
process/threading model;
Flexible;
Broad support for scripting languages;
Widely supported
Cons: Configuration can be complex;
Some modules from Apache 1.3 remain unavailable
Reviewed by: Michael Hall
Original Review Date: 7/15/2003
Original Review Version: 2.0.47