Apache Week
Issue 69, 13thJune1997:

Copyright 2020 Red Hat, Inc

In this issue

Apache Status

Release: 1.2 (Released 5th June 1997) (Download sites)
Beta: None

Patches to Apache 1.2 bugs will be made available in the 1.2 patches directory on the Apache site. This directory also includes some minor new features which did not make it into the 1.2 release. At present this directory contains several of these new features, and a bug fix for the content-negotiation bug reported last week. For details of all previously reported bugs, see the Apache bug database and Known Bugs page. Many common configuration questions are answered in the Apache FAQ.

Now that Apache 1.2 is released, new features can again be added. If any important bugs are found in 1.2 then there could be maintainence releases (starting with 1.2.1). Otherwise the next release will be version 1.3. This will be largely similar to 1.2 but with some minor new features. More importantly, this version will be the first release to work on Windows NT and Windows 95 systems.

In the meantime, initial work has started on the requirements for a redesign of the core Apache code. This will be part of the 2.0 release. The module API will almost certainly change as part of this redesign (although it may be possible to make existing modules work with the new module API if they are recompiled). There will be more "phases" in the new API, to allow modules to have better control over the lifetime of each request. A new "header parsing" phase has already been added to 1.2 (it was needed to support the BrowserMatch).

Other new features planned for Apache 2.0 include the ability to send the output of one module (for example, a CGI script) for parsing by another (such as for SSI commands), a graphical configuration interface to make the server easier to manage and multithreading for better performance and less use of memory.

Java is often considered a client-side language, which executes within the browser. However it is increasingly being used as a general purpose language, and it is now possible to write server-side programs in Java. This can be thought of a writing CGI programs in Java, although there are some differences. To use Java server programs in Apache you will need to install an additional Apache module. There are two modules available to do this.

The Java module allows Apache to call Java classes on the server. Provided that your operating system can execute Java (or you have installed a suitable Java environment), this module will let you call Java programs from the Apache server. The module author intends to update this module in the future to support the Servlet API, which will let Java server applications (servlets) run on any web server which supports this API.

JavaSoft has recently reasoned a specification for how servers can call server-side Java applications. Such applications are referred to as "servlets" (to distinguish them from applets, which run on the browser). Any Java program written to the servlet specification will work on any server compatible with servlets. This could make Java servlets very popular for server-side extensions.

The Java Servlet Development Kit (JSDK) from JavaSoft is freely downloadable, and includes an Apache module (mod_servlet) to implement the servlet protocol. Running server-side Java is quite simple:

  • On Solaris, download the Java Runtime Environment, or if you want to compile new servlets, download the Java Developer's Kit. On other platforms, use one of the ports of the JDK to other systems.
  • Download the JSDK from JavaSoft (download the Solaris version). Apache will need access to the java class files in this distribution, so extract it somewhere central (for example, /usr/local/JSDK).
  • Copy the mod_servet.c file from the etc directory of the JSDK into your Apache src directory, and add the appropriate Module line to Configuration. Run ./Configure and make. This module compiles with Apache 1.1.1 but not 1.2. To make it work with 1.2, apply this patch.
  • Add the configuration lines to httpd.conf and srm.conf as given in the README.apache file of the JSDK. Update the paths to the java runtime executable, java runtime directive, JSDK directory, servlet directory (within your JSDK directory) and servlet configuration file. Also change the line which currently says ServletConfig NCGI_CLASS sun.servlet.embedding.ncgi.NcgiServletGate to say ServletConfig NCGI_CLASS sun.servlet.apache.NcgiServletGate (or simply comment this line out and use the correct default provided in the patched mod_servet.c).

After doing the above you should be able to start your Apache server and request the sample servlets with URLs such as http://localhost/servlet/SnoopServlet.

Note that the patch to make mod_servlet.c work under Apache is still under development, and there should be a better version of this module in the future. At present, not of the java interface is implemented under Apache, and servlets must be located under the /servlet URL.

Apache in the News

Information Week's Web servers -- Apache:Freely Successful article (2nd June 1997) gives a realistic review of the advantages and disadvantages of using Apache. As they state, "the main drawbacks: no vendor support and lack of a point-and-click user interface".

Some of the Apache developers made front-page news on the US PC Week magazine. The article Fort Apache (June 9th 1997) says "The birth and growth of Apache is a refreshing departure from the headline-grabbing, overhyped software industry and a throwback to the Internet's early days".

Recently PC Magazine, also published by Ziff-Davis, has critised Apache for both useability and performance. While this article is much more positive, and includes quotes from companies running Apache they say that "Anyone unfamiliar with hard-core Unix programming will not be able to get Apache running, said users". Obviously users do need to know some amount of Unix to work with Apache - to edit the configuration files, setup shell scripts to start and stop the server, and so on - there is no requirement that users are serious Unix programmers. They also include the same performance graph as used in PC Magazine, which shows Apache as much slower than IIS at high loads. This may indicate that they did not configure the server correctly for high loads.