From dev-return-195633-archive-asf-public=cust-asf.ponee.io@tomcat.apache.org Fri Dec 14 18:46:28 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 1AD24180679 for ; Fri, 14 Dec 2018 18:46:26 +0100 (CET) Received: (qmail 66242 invoked by uid 500); 14 Dec 2018 17:45:55 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 64924 invoked by uid 99); 14 Dec 2018 17:45:54 -0000 Received: from Unknown (HELO svn01-us-west.apache.org) (209.188.14.144) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 14 Dec 2018 17:45:54 +0000 Received: from svn01-us-west.apache.org (localhost [127.0.0.1]) by svn01-us-west.apache.org (ASF Mail Server at svn01-us-west.apache.org) with ESMTP id 1A9573A2F6E for ; Fri, 14 Dec 2018 17:45:53 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1848964 [24/25] - in /tomcat/site/trunk/docs/connectors-doc: ./ ajp/ ajp/printer/ common_howto/ common_howto/printer/ images/ images/fonts/ miscellaneous/ miscellaneous/printer/ news/ news/printer/ printer/ reference/ reference/printer/ we... Date: Fri, 14 Dec 2018 17:45:50 -0000 To: dev@tomcat.apache.org From: csutherl@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20181214174553.1A9573A2F6E@svn01-us-west.apache.org> Modified: tomcat/site/trunk/docs/connectors-doc/webserver_howto/printer/apache.html URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/connectors-doc/webserver_howto/printer/apache.html?rev=1848964&r1=1848963&r2=1848964&view=diff ============================================================================== --- tomcat/site/trunk/docs/connectors-doc/webserver_howto/printer/apache.html (original) +++ tomcat/site/trunk/docs/connectors-doc/webserver_howto/printer/apache.html Fri Dec 14 17:45:49 2018 @@ -1,4 +1,35 @@ -The Apache Tomcat Connectors - Web Server HowTo - Apache HTTP Server HowTo
Apache Tomcat :: Apache Software Foundation

The Apache Tomcat Connectors - Web Server HowTo

Apache HTTP Server HowTo

Introduction
+ +The Apache Tomcat Connectors: mod_jk, ISAPI redirector, NSAPI redirector (1.2.x) - Apache HTTP Server HowTo

Apache HTTP Server HowTo

Introduction

This document explains how to connect Tomcat to the popular open source web server, Apache HTTP Server. You can use the connection module mod_jk with any version of Apache starting with 1.3 and any version @@ -7,12 +38,12 @@ of Tomcat starting with (at least) 3.2.

It is recommended that you also read the -Workers HowTo document +Workers HowTo document to learn how to setup the working entities between your web server and Tomcat Engines. For more detailed configuration information consult the Reference Guide for -workers.properties, -uriworkermap -and Apache. +workers.properties, +uriworkermap +and Apache.

Warning: If Apache and Tomcat are configured to serve content from @@ -29,7 +60,7 @@ This document was originally part of but has been split off for organisational reasons.

-
Document Conventions and Assumptions
+

Document Conventions and Assumptions

${tomcat_home} is the root directory of tomcat. Your Tomcat installation should have the following subdirectories: @@ -48,11 +79,11 @@ ${tomcat_home}\bin - Where you place web

In all the examples in this document ${tomcat_home} will be /var/tomcat3. -A worker is defined to be a tomcat process that accepts work from the Apache server. +A worker is defined to be a tomcat process that accepts work from the Apache server.

-
+
-
Supported Configuration
+

Supported Configuration

The mod_jk module was developed and tested on:

    @@ -79,9 +110,9 @@ Tomcat 3.2 to Tomcat 8. The mod_jk module uses the AJP protocol to send requests to the Tomcat containers. The AJP version typically used is ajp13.

    -
+
-
Who supports AJP protocols?
+

Who supports AJP protocols?

Tomcat supports ajp13 since Tomcat 3.2. Others servlet engines such as Jetty or JBoss also support the ajp13 protocol @@ -92,9 +123,9 @@ The ajp12 protocol has been de The ajp14 protocol is considered experimental.

-
+
-
How does it work ?
+

How does it work ?

In a nutshell a web server is waiting for client HTTP requests. When these requests arrive the server does whatever is needed to serve the @@ -128,9 +159,9 @@ but on different servlet container JVMs. We will cover these two cases in the advanced sections.

-
+ -
Obtaining mod_jk
+

Obtaining mod_jk

mod_jk can be obtained in two formats - binary and source. Depending on the platform you are running your web server on, a binary version of mod_jk may be available. @@ -166,7 +197,7 @@ here (look for JK 1.2 Binary Release operating systems for both Apache 1.3 and Apache 2.x.

-
Installation
+

Installation

mod_jk requires two entities: @@ -188,7 +219,7 @@ Apache HTTP Server, ie: /usr/lib/apache

-
Disabling old mod_jserv
+

Disabling old mod_jserv

If you've previously configured Apache to use mod_jserv, remove any ApJServMount directives from your httpd.conf. @@ -201,10 +232,10 @@ they are specific to mod_jserv.

The mod_jserv configuration directives are not compatible with mod_jk !

-
+
-
Using Tomcat auto-configure
-

Tomcat auto-configure is deprecated and has been removed in Tomcat 7 and later.

+

Using Tomcat auto-configure

+Tomcat auto-configure is deprecated and has been removed in Tomcat 7 and later.

The auto-configure works only for a single Tomcat running on the same machine where the Apache HTTP Server is running. The simplest way to configure Apache HTTP Server to use mod_jk is to turn on the Apache HTTP Server auto-configure setting @@ -212,10 +243,9 @@ in Tomcat and put the following include (make sure you replace $TOMCAT_HOME with the correct path for your Tomcat installation:

-
-    #To be added at the end of your httpd.conf
-    Include $TOMCAT_HOME/conf/jk/mod_jk.conf-auto
-
+
# To be added at the end of your httpd.conf
+Include $TOMCAT_HOME/conf/jk/mod_jk.conf-auto
+

Note: this file may also be generated as $TOMCAT_HOME/conf/auto/mod_jk.conf @@ -230,15 +260,14 @@ element in the server.xml file as per th Please note that this example is specific to Tomcat 5.x, unlike other sections of this document which also apply to previous Tomcat branches.

-
+
...
+<Engine ...>
   ...
-  <Engine ...>
-    ...
     <Listener className="org.apache.jk.config.ApacheConfig" modJk="/path/to/mod_jk.so" />
-    ...
-  </Engine>
   ...
-
+</Engine> +... +

Then restart Tomcat and mod_jk.conf should be generated. For more information on @@ -247,9 +276,9 @@ this topic, please refer to the API docu Tomcat docs website.

-
+ -
Custom mod_jk configuration
+

Custom mod_jk configuration

You should use custom configuration when:

@@ -268,66 +297,60 @@ to their real needs. -
+ -
Simple configuration example
+

Simple configuration example

Here is a simple configuration:

-
-    # Load mod_jk module
-    LoadModule    jk_module  modules/mod_jk.so
-    # Add the module (activate this lne for Apache 1.3)
-    # AddModule     mod_jk.c
-    # Where to find workers.properties
-    JkWorkersFile /etc/httpd/conf/workers.properties
-    # Where to put jk shared memory
-    JkShmFile     /var/log/httpd/mod_jk.shm
-    # Where to put jk logs
-    JkLogFile     /var/log/httpd/mod_jk.log
-    # Set the jk log level [debug/error/info]
-    JkLogLevel    info
-    # Send requests for context /examples to worker named worker1
-    JkMount  /examples/* worker1
-
+
# Load mod_jk module
+LoadModule    jk_module  modules/mod_jk.so
+# Add the module (activate this lne for Apache 1.3)
+# AddModule     mod_jk.c
+# Where to find workers.properties
+JkWorkersFile /etc/httpd/conf/workers.properties
+# Where to put jk shared memory
+JkShmFile     /var/log/httpd/mod_jk.shm
+# Where to put jk logs
+JkLogFile     /var/log/httpd/mod_jk.log
+# Set the jk log level [debug/error/info]
+JkLogLevel    info
+# Send requests for context /examples to worker named worker1
+JkMount  /examples/* worker1
+
-
-
mod_jk Directives
+ +

mod_jk Directives

We'll discuss here the mod_jk directives and details behind them

-
Define workers
+

Define workers

JkWorkersFile specify the location where mod_jk will find the workers definitions. -

-  JkWorkersFile     /etc/httpd/conf/workers.properties
-
+
JkWorkersFile     /etc/httpd/conf/workers.properties
+
-
-

-
+
-
Logging
+

Logging

JkLogFile specify the location where mod_jk is going to place its log file.

-
-  JkLogFile     /var/log/httpd/mod_jk.log
-
+
JkLogFile     /var/log/httpd/mod_jk.log
+

Since JK 1.2.3 for Apache 2.x and JK 1.2.16 for Apache 1.3 this can also be used for piped logging:

-
-  JkLogFile     "|/usr/bin/rotatelogs /var/log/httpd/mod_jk.log 86400"
-
+
JkLogFile     "|/usr/bin/rotatelogs /var/log/httpd/mod_jk.log 86400"
+

JkLogLevel @@ -346,73 +369,50 @@ set the log level between: -

-  JkLogLevel    info
-
+
JkLogLevel    info
+

-info should be your default selection for normal operations. -
-
+info should be your default selection for normal operations.

JkLogStampFormat will configure the date/time format found on mod_jk logfile. -See the mod_jk Apache HTTP Server reference for details. +See the mod_jk Apache HTTP Server reference for details.

-
-  JkLogStampFormat "[%y-%m-%d %H:%M:%S.%Q] "
-
- -

-
-
-

+
JkLogStampFormat "[%y-%m-%d %H:%M:%S.%Q] "
+

You can log mod_jk information using the Apache standard module mod_log_config. The module sets several notes in the Apache notes table. Most of them are are only useful in combination with a load balancer worker. -See the mod_jk Apache HTTP Server reference for details. +See the mod_jk Apache HTTP Server reference for details.

-
-  LogFormat     "%h %l %u %t \"%r\" %>s %b %{JK_WORKER_NAME}n %{JK_LB_FIRST_NAME}n \
-                 %{JK_LB_FIRST_BUSY}n %{JK_LB_LAST_NAME}n %{JK_LB_LAST_BUSY}n" mod_jk_log
-  CustomLog     logs/access_log     mod_jk_log
-
- -

-
-
-

+
LogFormat     "%h %l %u %t \"%r\" %>s %b %{JK_WORKER_NAME}n %{JK_LB_FIRST_NAME}n \
+              %{JK_LB_FIRST_BUSY}n %{JK_LB_LAST_NAME}n %{JK_LB_LAST_BUSY}n" mod_jk_log
+CustomLog     logs/access_log     mod_jk_log
+

You can also log a request protocol in the mod_jk log file instead of the access log. This is not recommended and mostly a backward compatibility feature. The directive JkRequestLogFormat will configure the format of this protocol. It gets configured and enabled on a per virtual host basis. -See the mod_jk Apache HTTP Server reference for details. +See the mod_jk Apache HTTP Server reference for details.

-
-  JkRequestLogFormat     "%w %V %T"
-
- -

-
-
-

+
JkRequestLogFormat     "%w %V %T"
+
-
+ -
Forwarding
+

Forwarding

The directive JkOptions allow you to set many forwarding options which will enable (+) or disable (-) following option. Without any leading signs, options will be enabled. -
-

@@ -424,8 +424,6 @@ It was "ForwardURICompatUnparsed" in ver You can turn the default off by switching on one of the other two options. You should leave this at it's default value, unless you have a very good reason to change it. -
-

@@ -433,10 +431,8 @@ All options are inherited from the globa Options that support enabling (plus options) and disabling (minus options), are inherited in the following way:
-
options(vhost) = plus_options(global) - minus_options(global) + plus_options(vhost) - minus_options(vhost)
-

@@ -445,12 +441,9 @@ will be partially reencoded after proces before forwarding to Tomcat. This will be compatible with local URL manipulation by mod_rewrite and with URL encoded session ids. -

-  JkOptions     +ForwardURIProxy
-
+
JkOptions     +ForwardURIProxy
+
-
-

@@ -460,12 +453,9 @@ It will always forward the original requ URIs with mod_rewrite and then forwarding the rewritten URI will not work. -

-  JkOptions     +ForwardURICompatUnparsed
-
+
JkOptions     +ForwardURICompatUnparsed
+
-
-

Using JkOptions ForwardURICompat, the forwarded URI will @@ -475,12 +465,9 @@ This is less spec compliant and is no prefix JkMount. This option will allow to rewrite URIs with mod_rewrite before forwarding. -

-  JkOptions     +ForwardURICompat
-
+
JkOptions     +ForwardURICompat
+
-
-

Using JkOptions ForwardURIEscaped, the forwarded URI will @@ -489,20 +476,15 @@ Explicit path components like ".." will This will not work in combination with URL encoded session IDs, but it will allow to rewrite URIs with mod_rewrite before forwarding. -

-  JkOptions     +ForwardURIEscaped
-
+
JkOptions     +ForwardURIEscaped
+
-
-

JkOptions RejectUnsafeURI will block all URLs, which contain percent signs '%' or backslashes '\' after decoding. -
-

Most web apps do not use such URLs. Using the option RejectUnsafeURI, you @@ -513,12 +495,9 @@ is not set. You can also realise such a check with mod_rewrite, which is more powerful but also slightly more complicated. -

-  JkOptions     +RejectUnsafeURI
-
+
JkOptions     +RejectUnsafeURI
+
-
-

@@ -540,8 +519,6 @@ ignored if used. JkOptions ForwardDirectories is used in conjunction with DirectoryIndex directive of Apache. As such mod_dir should be available to Apache, statically or dynamically (DSO) -
-

@@ -553,7 +530,7 @@ local file that matches (this is done by

If ForwardDirectories is set to false (default) and Apache doesn't find any files that match, Apache will serve the content of the directory (if directive -Options specifies Indexes for that directory) or a 403 Forbidden response (if +Options specifies Indexes for that directory) or a 403 Forbidden response (if directive Options doesn't specify Indexes for that directory).

@@ -570,11 +547,8 @@ ones visible only to Tomcat (i.e. if Apa that's going to get served). This is important if there is more then one type of file that Tomcat normally serves - for instance Velocity pages and JSP pages. -
-  JkOptions     +ForwardDirectories
-
-
-
+
JkOptions     +ForwardDirectories
+

@@ -583,11 +557,8 @@ of the Apache HTTP Server instead of rem Tomcat remote address valve for allowing connections only from configured Apache servers. -

-  JkOptions     +ForwardLocalAddress
-
-
-
+
JkOptions     +ForwardLocalAddress
+

@@ -595,13 +566,10 @@ Setting JkOptions ForwardPhysicalAddr physical peer TCP IP address as the client address. By default mod_jk uses the logical address as provided by the web server. For example the module mod_remoteip sets the logical IP address to the client IP forwarded by proxies -in the X-Forwarded-For header. +in the X-Forwarded-For header. -

-  JkOptions     +ForwardPhysicalAddress
-
-
-
+
JkOptions     +ForwardPhysicalAddress
+

@@ -611,24 +579,18 @@ a strong performance penalty for Apache more often than would normally be required (ie: at the end of each response). -

-  JkOptions     +FlushPackets
-
+
JkOptions     +FlushPackets
+
-
-

JkOptions FlushHeader, you ask mod_jk to flush Apache's connection buffer after the response headers have been received from Tomcat. -

-  JkOptions     +FlushHeader
-
+
JkOptions     +FlushHeader
+
-
-

@@ -644,12 +606,9 @@ If a firewall between Apache and Tomcat try to use the worker attribute socket_keepalive in combination with an appropriate TCP keepalive value in your OS. -

-  JkOptions     +DisableReuse
-
+
JkOptions     +DisableReuse
+
-
-

@@ -657,31 +616,25 @@ JkOptions ForwardKeySize, you ask required by Servlet API 2.3. This flag shouldn't be set when servlet engine is Tomcat 3.2.x (off by default). -

-  JkOptions     +ForwardKeySize
-
+
JkOptions     +ForwardKeySize
+
-
-

JkOptions ForwardSSLCertChain, you ask mod_jk, when using ajp13, to forward SSL certificate chain (off by default). -Mod_jk only passes the SSL_CLIENT_CERT to the AJP connector. This is not a +Mod_jk only passes the SSL_CLIENT_CERT to the AJP connector. This is not a problem with self-signed certificates or certificates directly signed by the root CA certificate. However, there's a large number of certificates signed by an intermediate CA certificate, where this is a significant problem: A servlet will not have the possibility to validate the client certificate on its own. The -bug would be fixed by passing on the SSL_CLIENT_CERT_CHAIN to Tomcat via the AJP connector. +bug would be fixed by passing on the SSL_CLIENT_CERT_CHAIN to Tomcat via the AJP connector.
This directive exists only since version 1.2.22. -

-  JkOptions     +ForwardSSLCertChain
-
+
JkOptions     +ForwardSSLCertChain
+
-
-

@@ -696,19 +649,15 @@ via request.getAttribute(attributeName). Note that the variables send via JkEnvVar will not be listed in request.getAttributeNames().
-
The variables are inherited from the global server to virtual hosts. -

-  JkEnvVar     SSL_CLIENT_V_START     undefined
-
-
-
+
JkEnvVar     SSL_CLIENT_V_START     undefined
+

-
+ -
Assigning URLs to Tomcat
+

Assigning URLs to Tomcat

If you have created a custom or local version of mod_jk.conf-local as noted above, you can change settings such as the workers or URL prefix. @@ -719,23 +668,22 @@ you can change settings such as the work In general the structure of a JkMount directive is:

-
  JkMount [URL prefix] [Worker name]
+
JkMount [URL prefix] [Worker name]
-
-  # send all requests ending in .jsp to worker1
-  JkMount /*.jsp worker1
-  # send all requests ending /servlet to worker1
-  JkMount /*/servlet/ worker1
-  # send all requests jsp requests to files located in /otherworker will go worker2
-  JkMount /otherworker/*.jsp worker2
-
+
# send all requests ending in .jsp to worker1
+JkMount /*.jsp worker1
+# send all requests ending /servlet to worker1
+JkMount /*/servlet/ worker1
+# send all requests jsp requests to files located in /otherworker will go worker2
+JkMount /otherworker/*.jsp worker2
+

You can use the JkMount directive at the top level or inside <VirtualHost> sections of your httpd.conf file.

-
+ -
Configuring Apache to serve static web application files
+

Configuring Apache to serve static web application files

If the Tomcat Host appBase (webapps) directory is accessible by the Apache HTTP Server, Apache can be configured to serve web application context directory static files instead @@ -754,16 +702,15 @@ application's web.xml. document space for a VirtualHost:

-
-  # Static files in the examples webapp are served by Apache
-  Alias /examples /vat/tomcat3/webapps/examples
-  # All requests go to worker1 by default
-  JkMount /* worker1
-  # Serve html, jpg and gif using Apache
-  JkUnMount /*.html worker1
-  JkUnMount /*.jpg  worker1
-  JkUnMount /*.gif  worker1
-
+
# Static files in the examples webapp are served by Apache
+Alias /examples /vat/tomcat3/webapps/examples
+# All requests go to worker1 by default
+JkMount /* worker1
+# Serve html, jpg and gif using Apache
+JkUnMount /*.html worker1
+JkUnMount /*.jpg  worker1
+JkUnMount /*.gif  worker1
+

Starting with mod_jk 1.2.6 for Apache 2.x and 1.2.19 for Apache 1.3, it's possible to exclude some URL/URI from @@ -775,28 +722,27 @@ You could use no-jk env var to fi directive when jk and alias/userdir URLs matches.

-
-  # All URL goes to tomcat except the one containing /home
-  <VirtualHost *:80>
-      ServerName testxxx.mysys
-      DocumentRoot /www/testxxx/htdocs
-
-  # Use SetEnvIf to set no-jk when /home/ is encountered
-      SetEnvIf Request_URI "/home/*" no-jk
-
-  # Now /home will goes to /home/dataxxx/
-      Alias /home /home/dataxxx/
-
-      <Directory "/home/dataxxx">
-          Options Indexes MultiViews
-          AllowOverride None
-          Require all granted
-      </Directory>
+
# All URL goes to tomcat except the one containing /home
+<VirtualHost *:80>
+    ServerName testxxx.mysys
+    DocumentRoot /www/testxxx/htdocs
+
+# Use SetEnvIf to set no-jk when /home/ is encountered
+    SetEnvIf Request_URI "/home/*" no-jk
+
+# Now /home will goes to /home/dataxxx/
+    Alias /home /home/dataxxx/
+
+    <Directory "/home/dataxxx">
+        Options Indexes MultiViews
+        AllowOverride None
+        Require all granted
+    </Directory>
 
-      JkMount /* myssys-xxx
+    JkMount /* myssys-xxx
 
-  </VirtualHost>
-
+</VirtualHost> +

@@ -807,24 +753,23 @@ into Apache's document space.

Attempts to access the WEB-INF or META-INF directories within a web application context or a Web Archive *.war within the Tomcat Host appBase (webapps) directory will fail with an -HTTP 403, Access Forbidden +HTTP 403, Access Forbidden

-
-  # Static files in all Tomcat webapp context directories are served by Apache
-  JkAutoAlias /var/tomcat3/webapps
-
-  # All requests go to worker1 by default
-  JkMount /* ajp13
-  # Serve html, jpg and gif using Apache
-  JkUnMount /*.html ajp13
-  JkUnMount /*.jpg  ajp13
-  JkUnMount /*.gif  ajp13
-
+
# Static files in all Tomcat webapp context directories are served by Apache
+JkAutoAlias /var/tomcat3/webapps
+
+# All requests go to worker1 by default
+JkMount /* ajp13
+# Serve html, jpg and gif using Apache
+JkUnMount /*.html ajp13
+JkUnMount /*.jpg  ajp13
+JkUnMount /*.gif  ajp13
+

If you encoded all your URLs to contain the session id -(;jsessionid=...), and you later decide, you want to +(;jsessionid=...), and you later decide, you want to move part of the content to Apache, you can tell mod_jk to strip off all session ids from URLs for those requests, that do not get forwarded via mod_jk. @@ -836,12 +781,12 @@ It can be enabled individually for virtu value is Off.

-
-
Building mod_jk on Unix
+ +

Building mod_jk on Unix

The mod_jk build use the widely used configure system.

-
Prepare your mod_jk configure from subversion
+

Prepare your mod_jk configure from subversion

In case you get source from subversion, ie without an existing configure script, you should have autoconf for configuration and installation.

@@ -856,22 +801,25 @@ they are only required for developers.

To create the configure script just type: -

[user@host] ~ $ ./buildconf.sh

+ +./buildconf.sh +

-
+
-
Using configure to build mod_jk
+

Using configure to build mod_jk

Here's how to use configure to prepare mod_jk for building, just type: -

-./configure [autoconf arguments] [mod_jk arguments]
-
+
./configure [autoconf arguments] [mod_jk arguments]
+

You could set CFLAGS and LDFLAGS to add some platform specifics:

-

[user@host] ~ $ LDFLAGS=-lc ./configure -with-apxs=/home2/local/apache/bin/apxs

+ +LDFLAGS=-lc ./configure -with-apxs=/home2/local/apache/bin/apxs +

If you want to build mod_jk for different versions of the Apache HTTP Server, like 1.3 or 2.x, @@ -900,9 +848,9 @@ Start over with the apxs location for yo

-
+ -
configure arguments
+

configure arguments

@@ -962,15 +910,24 @@ However those locks does not work on NFS
Apache related parameters

-
+ -
Examples of configure use
+

Examples of configure use

-

Apache 1.3 and 2.x build
[user@host] ~ $ ./configure --with-apxs=/usr/sbin/apxs
[user@host] ~ $ make
[user@host] ~ $ cp ./apache-1.3/mod_jk.so /usr/lib/apache
[user@host] ~ $ make clean
[user@host] ~ $ ./configure --with-apxs=/usr/sbin/apxs2
[user@host] ~ $ make
[user@host] ~ $ cp ./apache-2.0/mod_jk.so /usr/lib /apache2

+ +Apache 1.3 and 2.x build +./configure --with-apxs=/usr/sbin/apxs
+make
+cp ./apache-1.3/mod_jk.so /usr/lib/apache
+make clean
+./configure --with-apxs=/usr/sbin/apxs2
+make
+cp ./apache-2.0/mod_jk.so /usr/lib/apache2
+
-
+ -
Building mod_jk for Apache on Windows
+

Building mod_jk for Apache on Windows

The module was developed using Microsoft Visual C++, so having Visual Studio installed is a prerequisite if you want to perform your own build.

@@ -998,7 +955,25 @@ Set your path to the Apache web server d environment. -

Set up 32 or 64 Bit build environment
c:\>setenv /Release /X86
or (not available for IDE build)
c:\>setenv /Release /X64
Download tomcat-connectors-xxx-src.zip from
https://tomcat.apache.org/download-connectors.cgi
and unpack it
c:\>unzip tomcat-connectors-xxx-src.zip
Change directory to the mod_jk source directory.
To build mod_jk for the Apache HTTP server 2.0, 2.2 or 2.4,
use the "apache-2.0" directory, for the old
Apache HTTP server 1.3, the "apache-1.3" directory.
c:\>cd tomcat-connectors-xxx-src\native\apache-2.0
Set the environment variable "APACHE1_HOME" resp.
"APACHE2_HOME" resp. "APACHE22_HOME" resp. "APACHE24_HOME"
to the installation path of your Apache web server.
c:\>set APACHE24_HOME=D:\software\Apache\httpd-2.4.16

+ +Set up 32 or 64 Bit build environment +setenv /Release /X86 +or (not available for IDE build) +setenv /Release /X64 +Download tomcat-connectors-xxx-src.zip from +https://tomcat.apache.org/download-connectors.cgi +and unpack it +unzip tomcat-connectors-xxx-src.zip +Change directory to the mod_jk source directory. +To build mod_jk for the Apache HTTP server 2.0, 2.2 or 2.4, +use the "apache-2.0" directory, for the old +Apache HTTP server 1.3, the "apache-1.3" directory. +cd tomcat-connectors-xxx-src\native\apache-2.0 +Set the environment variable "APACHE1_HOME" resp. +"APACHE2_HOME" resp. "APACHE22_HOME" resp. "APACHE24_HOME" +to the installation path of your Apache web server. +set APACHE24_HOME=D:\software\Apache\httpd-2.4.16 +

The steps for an IDE build are then: @@ -1052,7 +1027,7 @@ of your Apache HTTP server (resp. the li For Apache HTTP Server 1.3, ApacheCore.lib is expected to exist before linking mod_jk will succeed.

-
Building mod_jk for Apache on System I - i5/OS (OS400)
+

Building mod_jk for Apache on System I - i5/OS (OS400)

Since OS400 V4R5, System I (AS/400) has used Apache 2.0 as their primary web server, replacing the old IBM web server. @@ -1102,29 +1077,81 @@ Send the whole jk source directory to Sy Then go to the System I command line: -

Create mod_jk library
===>CRTLIB MOD_JK TEXT(‘Apache mod'jk tomcat connector module')
Create service program source file
===>CRTSRCPF MOD_JK/QSRVSRC TEXT(‘Service program source file’)
Create the CL build program source file
===>CRTSRCPF FILE(MOD_JK/QCLSRC) TEXT(‘Build program source file’)
Edit the service program source file
===>STRSEU MOD_JK/QSRVSRC MOD_JK

+ +Create mod_jk library +CRTLIB MOD_JK TEXT(‘Apache mod'jk tomcat connector module') +Create service program source file +CRTSRCPF MOD_JK/QSRVSRC TEXT(‘Service program source file’) +Create the CL build program source file +CRTSRCPF FILE(MOD_JK/QCLSRC) TEXT(‘Build program source file’) +Edit the service program source file +STRSEU MOD_JK/QSRVSRC MOD_JK +

In the edited file, specify that only jk_module should be exported: -

Columns . . : 1 71 Edit MOD_JK/QSRVSRC
SEU==> MOD_JK
*************** Beginning of data *************************************
0001.00 STRPGMEXP PGMLVL(*CURRENT)
0002.00 EXPORT SYMBOL("jk_module")
0003.00 ENDPGMEXP
****************** End of data ****************************************

+ + Columns . . : 1 71 Edit MOD_JK/QSRVSRC + SEU==> MOD_JK + *************** Beginning of data ************************************* +0001.00 STRPGMEXP PGMLVL(*CURRENT) +0002.00 EXPORT SYMBOL("jk_module") +0003.00 ENDPGMEXP + ****************** End of data **************************************** +

You could start to build all the modules of mod_jk (cases for V5R4 or previous releases):

-

Copy the CL build program source for i5/OS before V5R4 from IFS
===>CPYFRMSTMF FROMSTMF('/home/apache/jk/native/apache-2.0/bldjk.qclsrc') +
TOMBR('/QSYS.LIB/MOD_JK.LIB/QCLSRC.FILE/BLDJK.MBR') MBROPT(*REPLACE)
Build the CL build program
===>CRTCLPGM PGM(MOD_JK/BLDJK) SRCFILE(MOD_JK/QCLSRC) TEXT('Apache mod_jk build program')
Launch the build
===>CALL MOD_JK/BLDJK
If the build if successfull, copy the new mod_jk module
===>C RTDUPOBJ OBJ(MOD_JK) FROMLIB(MOD_JK) OBJTYPE(*SRVPGM) TOLIB(QHTTPSVR) NEWOBJ(MOD_JK)

-

Copy the CL build program source for i5/OS V5R4 from IFS
===>CPYFRMSTMF FROMSTMF('/home/apache/jk/native/apache-2.0/bldjk54.qclsrc') +
TOMBR('/QSYS.LIB/MOD_JK.LIB/QCLSRC.FILE/BLDJK54.MBR') MBROPT(*REPLACE)
Build the CL build program for i5/OS V5R4
===>CRTCLPGM PGM(MOD_JK/BLDJK54) SRCFILE(MOD_JK/QCLSRC) TEXT('Apache mod_jk build program') TGTRLS(*CURRENT)
Launch the build for i5/OS V5R4
===>CALL MOD_JK/BLDJK54
If the build if successfull, copy the new mod_jk module
===>CRTDUPOBJ OBJ(MOD_JK) FROMLIB(MOD_JK) OBJTYPE(*SRVPGM) TOLIB(QHTTPSVR) NEWOBJ(MOD_JK)

+ +Copy the CL build program source for i5/OS before V5R4 from IFS +CPYFRMSTMF FROMSTMF('/home/apache/jk/native/apache-2.0/bldjk.qclsrc') + +TOMBR('/QSYS.LIB/MOD_JK.LIB/QCLSRC.FILE/BLDJK.MBR') MBROPT(*REPLACE) +Build the CL build program +CRTCLPGM PGM(MOD_JK/BLDJK) SRCFILE(MOD_JK/QCLSRC) TEXT('Apache mod_jk build program') +Launch the build +CALL MOD_JK/BLDJK
+If the build if successfull, copy the new mod_jk module +CRTDUPOBJ OBJ(MOD_JK) FROMLIB(MOD_JK) OBJTYPE(*SRVPGM) TOLIB(QHTTPSVR) NEWOBJ(MOD_JK) +
+ +Copy the CL build program source for i5/OS V5R4 from IFS +CPYFRMSTMF FROMSTMF('/home/apache/jk/native/apache-2.0/bldjk54.qclsrc') + +TOMBR('/QSYS.LIB/MOD_JK.LIB/QCLSRC.FILE/BLDJK54.MBR') MBROPT(*REPLACE) +Build the CL build program for i5/OS V5R4 +CRTCLPGM PGM(MOD_JK/BLDJK54) SRCFILE(MOD_JK/QCLSRC) TEXT('Apache mod_jk build program') TGTRLS(*CURRENT) +Launch the build for i5/OS V5R4 +CALL MOD_JK/BLDJK54
+If the build if successfull, copy the new mod_jk module +CRTDUPOBJ OBJ(MOD_JK) FROMLIB(MOD_JK) OBJTYPE(*SRVPGM) TOLIB(QHTTPSVR) NEWOBJ(MOD_JK) +

Next, you should restart your Apache 2.0 instance and enjoy this piece of OpenSource on System I.

-

ENDTCPSVR SERVER(*HTTP) HTTPSVR(MYSERVER)
STRTCPSVR SERVER(*HTTP) HTTPSVR(MYSERVER)

-
Building mod_jk for Apache on MacOS/X
+ +ENDTCPSVR SERVER(*HTTP) HTTPSVR(MYSERVER) +STRTCPSVR SERVER(*HTTP) HTTPSVR(MYSERVER) + +

Building mod_jk for Apache on MacOS/X

Mac OS X (10.2.x) build notes:

Assuming that you are root:

-

For Apache 1.3:
[user@host] ~ $ ./configure --with-apxs=/usr/sbin/apxs
[user@host] ~ $ cd apache-1.3
[user@host] ~ $ make -f Makefile.apxs
[user@host] ~ $ cp mod_jk.so /etc/libexec/httpd
For Apache 2.x:
[user@host] ~ $ ./configure --with-apxs=/usr/local/apache2/bin/apxs
(you should point to the directory where you installed Apache 2.x)
[user@host] ~ $ cd apache-2.0
[user@host] ~ $ make -f Makefile.apxs install

-
Getting mod_jk linked statically with Apache
+ +For Apache 1.3: +./configure --with-apxs=/usr/sbin/apxs +cd apache-1.3 +make -f Makefile.apxs +cp mod_jk.so /etc/libexec/httpd + +For Apache 2.x: +./configure --with-apxs=/usr/local/apache2/bin/apxs +(you should point to the directory where you installed Apache 2.x) +cd apache-2.0 +make -f Makefile.apxs install + +

Getting mod_jk linked statically with Apache

mod_jk allows to install mod_jk in the Apache source tree to get a statically linked mod_jk. Having mod_jk in the Apache executable brings some small performance @@ -1134,27 +1161,69 @@ The option --with-apache works both for The examples below show how to get mod_jk in the Apache process.

-
Installation for Apache-2.x
-

/home/apache24/httpd-2.4.12 is the directory where the Apache HTTP Server sources -are located.
[user@host] ~ $ ./configure --with-apache=/home/apache24/httpd-2.4.12
[user@host] ~ $ make
Install the mod_jk library and other files in -/home/apache24/httpd-2.4.12/modules:
[user@host] ~ $ make install
It is not possible to configure Apache directly because the config.m4 of mod_jk must -be added to the configure of httpd-2.x.
[user@host] ~ $ cd /home/apache24/httpd-2.4.12
[user@host] ~ $ sh buildconf
[user@host] ~ $ configure ... --with-mod_jk
[user@host] ~ $ make
[user@host] ~ $ make install

+

Installation for Apache-2.x

+ + /home/apache24/httpd-2.4.12 is the directory where the Apache HTTP Server sources +are located. +./configure --with-apache=/home/apache24/httpd-2.4.12
+make
+Install the mod_jk library and other files in +/home/apache24/httpd-2.4.12/modules: +make install
+ It is not possible to configure Apache directly because the config.m4 of mod_jk must +be added to the configure of httpd-2.x. +cd /home/apache24/httpd-2.4.12 +sh buildconf +configure ... --with-mod_jk +make +make install
+

The enable-jk=share and enable-jk=static are not supported. --with-mod_jk only allow static linking of mod_jk.

-
+
-
Installation for Apache-1.3
-

/home/apache/apache_1.3.27 is the directory where the apache-1.3 sources -are located.
[user@host] ~ $ ./configure --with-apache=/home/apache/apache_1.3.27
[user@host] ~ $ make
Install the libjk library, mod_jk.c, includes and other files in -/home/apache/apache_1.3.27/src/modules/jk:
[user@host] ~ $ make install
Configure in the Apache sources:
[user@host] ~ $ cd /home/apache/apache_1.3.27
[user@host] ~ $ configure ... --enable-module=dir --disable-shared=dir \
--activate-module=src/modules/jk/libjk.a \
--disable-shared=jk
[user@host] ~ $ make
[user@host] ~ $ make install

+

Installation for Apache-1.3

+ + /home/apache/apache_1.3.27 is the directory where the apache-1.3 sources +are located. +./configure --with-apache=/home/apache/apache_1.3.27
+make
+Install the libjk library, mod_jk.c, includes and other files in +/home/apache/apache_1.3.27/src/modules/jk: +make install
+ Configure in the Apache sources: +cd /home/apache/apache_1.3.27 +configure ... --enable-module=dir --disable-shared=dir \ + --activate-module=src/modules/jk/libjk.a \ + --disable-shared=jk +make +make install
+

The --enable-shared=jk is also working and builds a dso file.

-

Just change the configure in the Apache sources:
[user@host] ~ $ configure ... --enable-module=dir --enable-shared=dir \
--activate-module=src/modules/jk/libjk.a \
--enable-shared=jk

-
- -

- Copyright © 1999-2018, Apache Software Foundation -
\ No newline at end of file + + Just change the configure in the Apache sources: +configure ... --enable-module=dir --enable-shared=dir \ + --activate-module=src/modules/jk/libjk.a \ + --enable-shared=jk + + + +

+ Comments +

Notice: This comments section collects your suggestions + on improving documentation for Apache Tomcat.

+ If you have trouble and need help, read + Find Help page + and ask your question on the tomcat-users + mailing list. + Do not ask such questions here. This is not a Q&A section.

+ The Apache Comments System is explained here. + Comments may be removed by our moderators if they are either + implemented or considered invalid/off-topic. +

\ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org For additional commands, e-mail: dev-help@tomcat.apache.org