DOC

Connecting_Apache204 - Oracle Java, Apache and Application Server

By Anna Nelson,2014-04-24 12:42
10 views 0
Connecting_Apache204 - Oracle Java, Apache and Application Server

Connecting Apache 2.0.43 to Tomcat 4.1.12

    (Using JK Web Server Connector)

Configuring the Connector

The following section will contain instructions for installing Tomcat as a servlet container for Apache 2.0

    on UNIX. For example, this will allow Tomcat’s examples, found at http://localhost:8080/examples to execute properly on requests for port 80. (i.e. http://localhost/examples). This also allows Apache to be the

    web server that serves up ALL static content for both legacy applications (those in the DocumentRoot) and those included in web applications.

At this point, you should have a working Apache installation serving content on port 80, and a working

    Tomcat installation serving HTTP requests on port 8080. (The Tomcat examples included with the Tomcat

    installation should work).

These instructions have been tested on Red Hat 8.0 and Solaris 2.8.

The Connector Overview

To connect Apache and Tomcat, you need a connector. My choice, (for reasons explained below) is

    mod_jk.

As of 9/05/2002, there are 3 to choose from:

Connector Description

    mod_jk (AJP13) mod_jk is the older but more stable version, which

    supports load balancing and non-standard web

    application locations.

    At the time of this writing, this connector would be the

    best choice since it has been around for awhile and is

    very stable.

    NOTE: There are known bugs when using mod_jk and

    Tomcat 4.0.1 or 4.0.2, so you MUST use 4.0.3 or

    greater.

    mod_webapp (WARP) mod_webapp is newer (it first appeared with Tomcat

    4.0.x) than mod_jk and still has some bugs.

    It has several limitations (no differentiation between

    static and dynamic content, so no use for Apache).

    Unless you have some other reason for using

    mod_webapp, I recommend sticking with mod_jk until

    the former reaches satisfactory stability. mod_jk2 Is still fairly new. Would want something a bit more

    stable.

DSO Support in Apache

Make sure that the version of Apache you have installed has DSO support:

     % $APACHE_HOME/bin/httpd -l

If you see “mod_so.c” in the output, DSO support is available. If it's missing, you may have to recompile

    or reinstall Apache. (See the chapter in this book for installing Apache)

Obtaining mod_jk

    You have two choices in obtaining the proper mod_jk.so connector library; compiling it from source or simply getting the binary. You can save yourself a tremendous amount of aggravation by simply

    downloading the binary you need. Using RedHat 8.0, I could not get the “configure” or the “ant” option to

    create the required mod_jk.so file. I had to breakdown and download the binaries.

Binaries can be found on:

    http://www.johnturner.com/howto/apache-tomcat-howto.html#binaries

Copy mod_jk.so

    Copy the mod_jk.so library to the Apache modules” directory:

     % cp mod_jk.so $APACHE_HOME/modules

     % chmod 755 $APACHE_HOME/modules/mod_jk.so

Configuring Tomcat

When integrating Tomcat and Apache, we will need to modify the following files:

    ? server.xml

    Tomcat’s main configuration file. Found in $CATALINA_HOME/conf.

    ? worker.properties

    Tomcat’s configuration file for setting instances/workers. This can be placed anywhere that

    mod_jk has read access.

    ? mod_jk.conf

    Tomcat’s configuration file for integration with Apache. Found in

    $CATALINA_HOME/conf/auto.

    ? httpd.conf

    Apache’s main configuration. Found in $APACHE_HOME/conf.

Edit server.xml File

Edit the file $CATALINA_HOME/conf/server.xml as follows

    a) Add the following lines immediately after the declaration

    ="org.apache.ajp.tomcat4.config.ApacheConfig"

     modJk="/u02/app/apache/modules/mod_jk.so"

     jkDebug="info"

     workersConfig="/u02/app/tomcat/conf/jk/workers.properties"

     jkLog="/u02/app/tomcat/logs/mod_jk.log"/>

b) Locate the entry for “AJP 1.3 Connector”. It will have a default port already defined for port

    8009. You can simply do a search for the first occurrence of “8009”.

    If you needed to change the port number from 8009 to 8029 (see sections above for Oracle

    and Linux 7.x users), make that change for this entry. In most cases (users of RedHat 8.0+)

    this will not be necessary.

    Realize that the default Apache connector starting with Tomcat 4.x is JK2, not JK.

    You will need to comment out the Connector on port 8009 with the className of

    org.apache.coyote.tomcat4.CoyoteConnector”.

    Then uncomment the Connector element right below it on port 8009 that has a className of

    org.apache.ajp.tomcat4.Ajp13Connector”.

    The element you will want exposed (uncommented) is:

    -- Define an AJP 1.3 Connector on port 8009 -->

    r className="org.apache.ajp.tomcat4.Ajp13Connector"

     port="8009" minProcessors="5" maxProcessors="75"

     acceptCount="10" debug="0"/>

c) After any declaration, add a listener

    ="org.apache.ajp.tomcat4.config.ApacheConfig"

     append="true" />

    d) Locate and change any reference of “localhost” to the value of “ServerName” set in

    $APACHE_HOME/conf/httpd.conf file. This will typically be the name of the server

    hosting Apache/Tomcat.

Create “jk” directory

     Create the following directory under $CATALINA_HOME/conf :

     cd $CATALINA_HOME/conf

     mkdir jk

Create “auto” directory

     Create the following directory under $CATALINA_HOME/conf :

     cd $CATALINA_HOME/conf

     mkdir auto

Create workers.properties files

     In the “jk” directory you just created, create a file called “workers.properties”.

    workers.tomcat_home=/u02/app/tomcat workers.java_home=$(JAVA_HOME) ps=/

worker.list=ajp13

worker.ajp13.port=8009

    worker.ajp13.host= worker.ajp13.type=ajp13

    Bounce the Tomcat Server

cd $CATALINA_HOME/bin

    ./shutdown.sh

    ./startup.sh

    Check for and rename the created mod_jk.conf file

After starting the Tomcat server, you should have a generated mod_jk.conf file in the

    $CATALINA_HOME/conf/auto directory. Now rename the file mod_jk.conf to

    mod_jk_custom.conf and change any of the entries that you want Apache to hand off to the

    Tomcat container.

     % cd $CATALINA_HOME/conf/auto

    % ls -l

-rw-r--r-- 1 oracle dba 589 Jun 2 21:17 mod_jk.conf

% cp mod_jk.conf mod_jk_custom.conf

    Here is an example mod_jk_custom.conf file that changes both the “examples” and “development” web application. As you can see, by default, Tomcat says that all requests for a

    particular web application should be handed to the Tomcat instance. (Remember that Tomcat can

    also handle static contact like HTML and images). In out case, we ONLY want JSP and Servlets

    to be processed by the Tomcat container while static content like HTML and images are being

    served by the Apache web server.

########## Auto generated on Fri Dec 06 01:33:31 EST 2002########## LoadModule jk_module /u02/app/apache/modules/mod_jk.so JkWorkersFile "/u02/app/tomcat/conf/jk/workers.properties" JkLogFile "/u02/app/tomcat/logs/mod_jk.log" JkLogLevel info ServerName cartman.ads.com JkMount /admin ajp13 JkMount /admin/* ajp13 JkMount /webdav ajp13 JkMount /webdav/* ajp13 JkMount /development/*.jsp ajp13 JkMount /development/servlet/* ajp13

     JkMount /examples/*.jsp ajp13 JkMount /examples/servlet/* ajp13 JkMount /tomcat-docs ajp13 JkMount /tomcat-docs/* ajp13 JkMount /ora ajp13 JkMount /ora/* ajp13 JkMount /manager ajp13 JkMount /manager/* ajp13

    Edit the httpd.conf file

    Add the following lines to the end of the file. This would include any of the Alias’s used to serve

    up any static content in your web applications and the configured JkMount directives by

    including the mod_jk_custom.conf file.

     ... # +-----------------------------------------------+ # | EXAMPLES | # +-----------------------------------------------+ # Create an Alias for examples Alias /examples "/u02/app/tomcat/webapps/examples" # Now allow access to this directory by setting # the required Apache directives. s/examples"> Options Indexes FollowSymLinks ExecCGI Includes MultiViews AllowOverride All Order allow,deny Allow from all # +-----------------------------------------------+ # | DEVELOPMENT | # +-----------------------------------------------+ # Create an Alias for examples Alias /development "/u02/app/tomcat/webapps/development" # Now allow access to this directory by setting # the required Apache directives. Options Indexes FollowSymLinks ExecCGI Includes MultiViews AllowOverride All Order allow,deny Allow from all # +-----------------------------------------------+ # | PROTECT WEB-INF DIRECTORY | # +-----------------------------------------------+ # Now prevent any unauthorized access to # the contents of WEB-INF -INF/*> AllowOverride None Deny From All Include /u02/app/tomcat/conf/auto/mod_jk_custom.conf

    ...

    NOTE: If you were not able to create the mod_jk.conf file, you can manually add the Tomcat

    directives to your httpd.conf as follows:

    a) Add the following to the LoadModule section:

    .c>

     LoadModule jk_module /u02/app/apache/modules/mod_jk.so

    

    b) Add the following to the end of the httpd.conf file:

    JkWorkersFile "/u02/app/tomcat/conf/jk/workers.properties" JkLogFile "/u02/app/tomcat/logs/mod_jk.log" JkLogLevel info jeffreyh3.comanage.net> ServerName jeffreyh3.comanage.net JkMount /admin ajp13 JkMount /admin/* ajp13 JkMount /webdav ajp13 JkMount /webdav/* ajp13 JkMount /examples/*jsp ajp13 JkMount /examples/servlet/* ajp13 JkMount /tomcat-docs ajp13 JkMount /tomcat-docs/* ajp13 JkMount /manager ajp13 JkMount /manager/* ajp13 >

Start the Apache HTTP Server

     % su -

    % /u02/app/apache/bin/apachectl start

Testing the Configuration

Check the standalone Apache Configuration

     http://localhost

    Check the standalone Tomcat Servlet Container

     http://localhost:8080

     This will use the HTTP Connector from the Tomcat container to answer the request.

Check the standalone Tomcat Servlet Examples

     http://localhost:8080/examples/servlet/RequestInfoExample

Check the Tomcat / Apache Integration

    http://localhost/examples/servlet/RequestInfoExample

    http://localhost/examples/servlet/HelloWorldExample

    Check to see if Apache is serving the static content by using the “examples” web application

    http://localhost/examples

    This test will confirm that within the “examples” web application, the Apache web server is

    answering and handling requests for static content. (Content that is neither JSP or /servlet/*).

    If everything is set up correctly, you should see something like the following:

Report this document

For any questions or suggestions please email
cust-service@docsford.com