Overview of the Oracle HTTP Server (OHS)
Oracle Application Server Tips by Burleson
The Oracle HTTP Server (OHS) is built on
Apache version 1.3 and is a very reliable, secure, and capable web
server. OHS (and Apache) is an extremely versatile web server,
capable of handling multiple simultaneous requests in multiple
languages and formats. The Apache base that OHS is built upon
has earned a solid reputation throughout the world for it’s
capabilities and performance.
For the most part, this chapter refers to
the Oracle HTTP Server as OHS, however, many of the actual files
refer to the server as Apache. Because OHS is designed
to be the front end to the application server, there are a number of
additions to the base Apache server and a few features that are not
implemented. An example of this is starting and stopping OHS.
While the Apache server can be started from the command prompt and
can be passed parameters at startup, OHS is normally started and
monitored by the opmnclt script as part of the 9i Application
Server, and the opmn must pass startup parameters to OHS.
This chapter is focused on how to administer
and maintain the Oracle HTTP Server. The best place for
additional information is Oracle HTTP Server Administration Guide.
And since OHS is built on the Apache 1.3 server you can also find
information in the online documentation at
Managing the Oracle HTTP Server
In early versions of Oracle9iAS, OHS
(with a standard Apache server) was started and stopped using the
httpd command located in the $ORACLE_HOME/Apache/Apache/bin
directory. Oracle9iAS 9.0.4 uses the apachectl script (located
in the same directory). However, when used, it returns a warning not
to use apachectl, but to instead use the $ORACLE_HOME/dcm/dcmctl
script. The best way to insure that the application server
starts up all parts, including OHS, is to use the $ORACLE_HOME/opmn/bin/opmnctl
script, passing it the startall or stopall parameters. This is
because OHS is an integral part of the application server - stopping
just OHS will cause problems in the instance. Also, opmn
monitors the processes and may restart OHS if it detects it is down.
Thus, it is recommended that the instance be brought down using opmn
if you need to bring down or restart OHS from the command line.
Once running, OHS is easily configured, started or stopped using the
Enterprise Manager web site. Using Enterprise Manager is
discussed later in this chapter.
When OHS starts, it begins as a single
parent process that writes its operating system pid in the file
httpd.pid. The parent process spawns a number of child
processes that are used to handle client requests. As the
server runs, the parent process checks the number of idle child
processes and either adds processes (if there are too few) or
destroys processes (if there are too many) to insure that the server
is ready to respond instantly to a request and is not wasting server
resources with too many idle processes.
When OHS starts, the configuration
information is obtained from a file called httpd.conf, which is
located in the $ORACLE_HOME/Apache/Apache/conf directory. On
an Apache server, this file can be moved and the new location passed
into the server as a startup parameter. Since OHS is started
and monitored by the opmn program, the configuration file should
remain where it was installed.
The httpd.conf file is discussed in detail
later in this chapter. The Apache server that OHS is built on
provides a basic framework and then expands its capabilities by
utilizing modules. This modular structure allows the
administrator to add or remove capabilities to the base server as
Note: The Distributed Configuration
Management utility maintains a repository of configuration data.
If you manually update the configuration files, you must update the
repository. To execute this update use the command: dcmctl –updateConfig
–ct ohs. If you update the configuration using Enterprise
Manager the repository is automatically updated for you.
Oracle HTTP Server Modules
The OHS uses modules to add capabilities to
the base server. Some modules are self-contained, while others
rely on separate modules, and some call external programs.
Each module adds features to implement a specific function.
There are nearly 50 core modules in a basic Apache server, while OHS
adds additional modules to support specific 9iAS features.
Each module may add new directives that need
to be defined in the httpd.conf file. The httpd.conf file
contains a number of directives, enclosed within IfModules, that
load parameters only if that module is loaded. Modules are not
actually loaded at startup. OHS scans the module’s file and
loads headers that will call the module if its functionality is
Below is a brief list of some of the main
modules and the functions they add to the basic server. Many
will be discussed in greater detail in the configuration file
section. Because the function of an application server is to support
Enterprise Applications using J2EE, mod_jserv and mod_oc4j are
discussed in detail in Chapters 6 and 7.
Access Control based on client host name or
Authentication using text files
Anonymous user authentication
Provides integration with Single Sign On
Execution of CGI scripts
Maps directories into the document tree and
Sets environmental variables based on the
Supports trailing slash redirects and
directory index files
Supports customization of HTTP response
Supports logging of request.
Presents current server performance
Determination of file types from file name
Supports selecting the best from multiple
documents that support user’s capabilities
Rule base rewriting engine to rewrite
request on the fly
Support user_specific directories
Forwards perl scripts to the PERL
Forwards servlet request and handles
Routes request to OC4J instances, also
supports load balancing.
Forward plsql request to the Oracle database
engine for execution of stored procedures
Execution of CGI scripts
Supports unique identifiers for certain
Supports user tracking using cookies
Supports caching proxy server
In this chapter and throughout the book some
modules will be discussed in detail. For detailed information
on each module refer to the Oracle HTTP Server Administration Guide.
This is an excerpt from "Oracle
10g Application Server Administration Handbook" by Don Burleson
and John Garmany.