RE: Mod_jk + Apache on RHEL3 gives 503 for jsp only

2005-10-11 Thread [EMAIL PROTECTED]

To answer some questions below:

Perfectly means it is our production tomcat server.  It performs all the
functions required and is accessed from the legacy webserver.

Getting images from the path http://webserver/PI/image.png.  We have no
direct access linked to tomcat instances on the their ports.

The Tomcat and Webserver will be on the same server.

JkShmFile seems to be for unix installs where this resides on RedHat
Linux EL3.  I can add it if it is required for linux.

Jkmount directives are not new but from a 4.1.24 Tomcat and Jk_mod
that was upgraded.  I will make the changes to be consistent with the
deployed version of Tomcat.

I have 4 workers setup.  1 points to a running 4.1.24 tomcat supporting
an application to be replaced soon I hope.  1 to a separate port on the
4.12.24 tomcat server for one specific application because I was asked
to set it up that way.  1 to the current production tomcat server.  And
one that is for testing and uses the same settings as the production but
I can edit and change as I need to make things work.

I am a bit frustrated as I have not done much to make things break.  I
copied the config files and edited the httpd.conf to be consistent with
the legacy install.  This is the only part that does not work.

If Apache's DocumentRoot does not correspond to Tomcat's appBase, then
any static files contained in the application will not be served by
Apache without some more Apache configuration changes.  Can you give me
an example of this?

-Original Message-
From: Mark Eggers [mailto:[EMAIL PROTECTED]
Sent: Thursday, October 06, 2005 10:54 PM
To: Tomcat Users List
Subject: Re: Mod_jk + Apache on RHEL3 gives 503 for jsp only


--- [EMAIL PROTECTED] [EMAIL PROTECTED]
wrote:

 I have jakarta-tomcat-5.5.9 installed and working
 properly on the new
 server.  It is perfectly accessible from the legacy
 web server.

By perfectly accessible you mean . . . ?

 The main page, home.jsp, loads fine in the servlet
 if no page is given.
 http://webserver/PI/  The home.jsp spawns a 503 if
 is in the URL.
 http://webserver/PI/home.jsp   I can successfully
 get images from the
 page from the tomcat instance.  It does not like the
 .jsp extension.

By successfully getting images, do you mean:

http://webserver/PI/image.png

or

http://tomcatserver:8080/PI/image.png

 I have watched in Ethereal as no traffic goes from
 the apache to the
 tomcat.
 I have tried using the loopback and local network
 address.

Why?  Is this Tomcat instance on the same server?


 #INSERT OF TOMCAT CONF PARAMETERS
 # Load mod_jk module
 # LoadModule jk_module modules/mod_jk.so
 LoadModule jk_module /etc/httpd/modules/mod_jk.so

 # Declare the module for IfModule directive
 #AddModule mod_jk.c

 # Where to find workers.properties
 JkWorkersFile /etc/httpd/conf/workers.properties

 # Where to put jk logs
 JkLogFile /var/log/httpd/mod_jk.log

 # Set the jk log level [debug/error/info]
 JkLogLevel debug

 # Select the log format
 JkLogStampFormat [%a %b %d %H:%M:%S %Y] 

 # JkOptions indicate to send SSL KEY SIZE,
 JkOptions +ForwardKeySize +ForwardURICompat
 -ForwardDirectories

 # JkRequestLogFormat set the request format
 JkRequestLogFormat %w %V %T


I don't see the specification for JkShmFile

 # Send servlet for context /examples to worker named
 worker1
 JkMount /examples/servlet/* worker1

The above should be:

JkMount /servlets-examples/servlet/* worker1

 JkMount /PI/* worker3
 #JkMount /PI/*.jsp worker3

Why are you using worker3 here?

 # Send JSPs for context /examples to worker named
 worker1
 JkMount /examples/*.jsp worker1

The above shoould be /jsp-examples/*.jsp worker1

 JkMount /journals/*.jsp worker1

 Worker Properties
 /etc/httpd/conf/workers.properties
 # Define some properties
 workers.apache_log=/var/log/httpd/

workers.tomcat_home=/usr/local/tomcat/jakarta-tomcat-5.5.9
 workers.java_home=/usr/bin/java
 ps=/

 #
 worker.list=worker1


According to the documentation this should contain a
comma separated list of all the workers.  However, if
you're going to the same Tomcat instance all the time,
you'll only need one worker definition

 # Set properties for worker1 (ajp13)
 worker.worker1.type=ajp13
 worker.worker1.host=172.20.1.19
 worker.worker1.port=8009


First of all, there should only be one worker list.
Second of all, why do you have multiple workers going
to the same host but different ports?  Do you have
multiple Tomcats running on this host?

 #
 worker.list=worker2

 # Set properties for worker2 (ajp13)
 worker.worker2.type=ajp13
 worker.worker2.host=172.20.1.19
 worker.worker2.port=10009

 #
 worker.list=worker3

 # Set properties for worker3 (ajp13)
 worker.worker3.type=ajp13
 worker.worker3.host=127.0.0.1
 worker.worker3.port=8099

 #
 worker.list=worker4

 # Set properties for worker4 (ajp13)
 worker.worker4.type=ajp13
 worker.worker4.host=172.20.1.19
 worker.worker4.port=8099

Even after all that is done, there are some other
issues when connecting Apache httpd

RE: Mod_jk + Apache on RHEL3 gives 503 for jsp only

2005-10-11 Thread Mark Eggers
Here's a quick writeup.

This is going to be a long reply, and I hope it will
be useful.

I am using Fedora Core 4 as a model.  I hope it will
be close enough to RHEL 3 to be useful.  You may have
to change paths in order to correspond to your
environment.

First of all, my environment:

Hardware/OS
===
Dell 8200 with 768 MB memory
Dual boot:
Fedora Core 4 2.6.13-1.1526_FC4
Windows 2000 Professional

Software

Java 1.5.0_4 from Sun
Apache 2.0.54 from RPM
Tomcat 5.5.9 from jakarta.apache.org
mod_jk 1.2.14.1 from source

Installation

Java 1.5.0_4 is installed in /usr/jdk1.5.0_04 and soft

linked to /usr/java
JAVA_HOME is set in /etc/profile
$JAVA_HOME/bin is placed in $PATH before /usr/bin

I've left the Apache RPM install alone, which means
the following:

DocumentRoot /var/www
Logs /etc/logs soft linked to /var/log/httpd
modules  /etc/modules soft linked to
/usr/lib/httpd/modules
conf /etc/conf
 /etc/conf.d

I've created a tomcat user with the same group
membership as apache user.  The home directory is
/home/tomcat.

/home/tomcat/jakarta-tomcat-5.5.9 Current Tomcat
installation

Configuration
=

workers.properties
--

I've placed workers.properties in /etc/httpd/conf

#
# basic worker list
#
worker.list=local,status

#
# one to serve the applications
#
worker.local.type=ajp13
worker.local.host=localhost
worker.local.port=8009

#
# one to check the status
#
worker.status.type=status
worker.status.host=localhost
worker.status.port=8009

This is all you really need in order to connect a
local Apache to a local Tomcat.

I cannot think of a good reason to define more
workers.  That isn't to say that there aren't any.

server.xml
-- 
If you put multiple workers going to the same host and
different ports, then you will have to modify
server.xml.  Basically, you will have to add a
connector statement for each unique port that you use
in your workers.properties file.

You have two different ports, so you will need two
connector statements.

Connector port=10009
   enableLookups=false redirectPort=8443
   protocol=AJP/1.3 /
Connector port=8099
   enableLookups=false redirectPort=8643
   protocol=AJP/1.3 /

jk.conf
---
I'm following the examples used by Fedora Core 4 in
configuring other add-on modules for Apache.  You can
place the mod_jk configuration information directly in
/etc/httpd/conf/httpd.conf, but I've chosen to create
a separate file in /etc/httpd/conf.d

The contents of my file are as follows:

#
# following Fedora's add-on philosophy
#
LoadModulejk_module modules/mod_jk.so

JkWorkersFile /etc/httpd/conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevelwarn
JkLogStampFormat  [%a %b %d %H:%M:%S %Y] 
JkShmFile logs/shm-file


#
# jk status
#
JkMount /jk-status/ status

httpd.conf
--

Static File Problem
---
This is where the configuration can become a little
more complex.  It helps to understand how Apache finds
files to serve.

Each host in Apache has a DocumentRoot.  In Redhat
Fedora, the line that defines that reads:

DocumentRoot /var/www/html

That means that when you enter the following URL:

http://localhost/application/

Apache will look for the DirectoryIndex files (usually
index.html) in:

/var/www/html/application/

This is fine until you add an application server into
the mix.  Many people package up the entire
application into one war file.  This means that all
static as well as dynamic content gets loaded into the
application server area.

In your case, that's
/usr/local/tomcat/jakarta-tomcat-5.5.9/webapps

Apache will know absolutely nothing about this
directory, and any files that are not mapped by
JkMount and served by Tomcat will not be found by
Apache

Static File Solutions
-
1. Change DocumentRoot

The most global change is to change DocumentRoot.  In
order for this to work, all files in
/usr/local/tomcat/jakarta-tomcat-5.5.9/webapps must be
readable by the user that runs Apache (typically
apache in a Redhat distribution).

The way to do this is to put the following as your
DocumentRoot statement.

DocumentRoot
/usr/local/tomcat/jakarta-tomcat/webapps

While this works, it means that you will have to place
all web sites in this location, even if they do not
have dynamic content.

In general, I don't like this solution.

2. Add Directory and Alias Statements

Traditionally locating static files in a dynamic web
site has been done by using a combination of Directory
and Alias directives.  The Directory directive grants
appropriate server permissions (who gets to see the
files, etc.) and the Alias directive matches a
directory with a base URL.

For example, here's one way to map application1 living

in

/usr/local/tomcat/jakarta-tomcat/5.5.9/webapps/application1.

#
# This goes in httpd.conf
#
Directory /usr/local/tomcat/webapps/application1/
   Options Indexes 

Mod_jk + Apache on RHEL3 gives 503 for jsp only

2005-10-06 Thread [EMAIL PROTECTED]
Hello,

I have a website that I am migrating to a new server.

Server is Redhat ES3 2.4.21-20.0.1.ELsmp.  Server version: Apache/2.0.46

I have jakarta-tomcat-5.5.9 installed and working properly on the new
server.  It is perfectly accessible from the legacy web server.

On the Website on the new server, access to jsp based pages give a 503
error.

The main page, home.jsp, loads fine in the servlet if no page is given.
http://webserver/PI/  The home.jsp spawns a 503 if is in the URL.
http://webserver/PI/home.jsp   I can successfully get images from the
page from the tomcat instance.  It does not like the .jsp extension.

In the mod_jk log I can see the match made:

[Wed Sep 28 10:29:14 2005] [18841:2816] [debug]
map_uri_to_worker::jk_uri_worker_map.c (461): Attempting to map context
URI '/PI/*'
[Wed Sep 28 10:29:14 2005] [18841:2816] [debug]
map_uri_to_worker::jk_uri_worker_map.c (475): Found a wildchar match
worker3 - /PI/*

However, in the apache access log is the 503.
xxx.89.23.173 - - [28/Sep/2005:10:29:14 -0400] GET /PI/home.jsp
HTTP/1.1 503 412 - Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US;
rv:1.7.12) Gecko/20050915 Firefox/1.0.7
SESSIONID=128F9AD992A16BC3D3EB1ED0AD5549C1

I have watched in Ethereal as no traffic goes from the apache to the
tomcat.
I have tried using the loopback and local network address.
I have tried adding a *.jsp directive to the mod_jk config for the
servlet.

Any help would be appreciated.  I have a dent in my desk from hitting it
with my forehead.

Apache Config:

#INSERT OF TOMCAT CONF PARAMETERS
# Load mod_jk module
# LoadModule jk_module modules/mod_jk.so
LoadModule jk_module /etc/httpd/modules/mod_jk.so

# Declare the module for IfModule directive
#AddModule mod_jk.c

# Where to find workers.properties
JkWorkersFile /etc/httpd/conf/workers.properties

# Where to put jk logs
JkLogFile /var/log/httpd/mod_jk.log

# Set the jk log level [debug/error/info]
JkLogLevel debug

# Select the log format
JkLogStampFormat [%a %b %d %H:%M:%S %Y] 

# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format
JkRequestLogFormat %w %V %T

# Send servlet for context /examples to worker named worker1
JkMount /examples/servlet/* worker1
JkMount /PI/* worker3
#JkMount /PI/*.jsp worker3
# Send JSPs for context /examples to worker named worker1
JkMount /examples/*.jsp worker1
JkMount /journals/*.jsp worker1

Worker Properties
/etc/httpd/conf/workers.properties
# Define some properties
workers.apache_log=/var/log/httpd/
workers.tomcat_home=/usr/local/tomcat/jakarta-tomcat-5.5.9
workers.java_home=/usr/bin/java
ps=/

#
worker.list=worker1

# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=172.20.1.19
worker.worker1.port=8009

#
worker.list=worker2

# Set properties for worker2 (ajp13)
worker.worker2.type=ajp13
worker.worker2.host=172.20.1.19
worker.worker2.port=10009

#
worker.list=worker3

# Set properties for worker3 (ajp13)
worker.worker3.type=ajp13
worker.worker3.host=127.0.0.1
worker.worker3.port=8099

#
worker.list=worker4

# Set properties for worker4 (ajp13)
worker.worker4.type=ajp13
worker.worker4.host=172.20.1.19
worker.worker4.port=8099


_

Tim Pickard
CrossRef
Systems Support Analyst and Administrator
40 Salem Street
Lynnfield, MA 01940
tpickard at crossref dot org
781 295 0072 x27
__




Re: Mod_jk + Apache on RHEL3 gives 503 for jsp only

2005-10-06 Thread Mark Eggers
--- [EMAIL PROTECTED] [EMAIL PROTECTED]
wrote:

 I have jakarta-tomcat-5.5.9 installed and working
 properly on the new
 server.  It is perfectly accessible from the legacy
 web server.

By perfectly accessible you mean . . . ?
 
 The main page, home.jsp, loads fine in the servlet
 if no page is given.
 http://webserver/PI/  The home.jsp spawns a 503 if
 is in the URL.
 http://webserver/PI/home.jsp   I can successfully
 get images from the
 page from the tomcat instance.  It does not like the
 .jsp extension.

By successfully getting images, do you mean:

http://webserver/PI/image.png

or

http://tomcatserver:8080/PI/image.png

 I have watched in Ethereal as no traffic goes from
 the apache to the
 tomcat.
 I have tried using the loopback and local network
 address.

Why?  Is this Tomcat instance on the same server?

 
 #INSERT OF TOMCAT CONF PARAMETERS
 # Load mod_jk module
 # LoadModule jk_module modules/mod_jk.so
 LoadModule jk_module /etc/httpd/modules/mod_jk.so
 
 # Declare the module for IfModule directive
 #AddModule mod_jk.c
 
 # Where to find workers.properties
 JkWorkersFile /etc/httpd/conf/workers.properties
 
 # Where to put jk logs
 JkLogFile /var/log/httpd/mod_jk.log
 
 # Set the jk log level [debug/error/info]
 JkLogLevel debug
 
 # Select the log format
 JkLogStampFormat [%a %b %d %H:%M:%S %Y] 
 
 # JkOptions indicate to send SSL KEY SIZE,
 JkOptions +ForwardKeySize +ForwardURICompat
 -ForwardDirectories
 
 # JkRequestLogFormat set the request format
 JkRequestLogFormat %w %V %T
 

I don't see the specification for JkShmFile

 # Send servlet for context /examples to worker named
 worker1
 JkMount /examples/servlet/* worker1

The above should be:

JkMount /servlets-examples/servlet/* worker1

 JkMount /PI/* worker3
 #JkMount /PI/*.jsp worker3

Why are you using worker3 here?

 # Send JSPs for context /examples to worker named
 worker1
 JkMount /examples/*.jsp worker1

The above shoould be /jsp-examples/*.jsp worker1

 JkMount /journals/*.jsp worker1
 
 Worker Properties
 /etc/httpd/conf/workers.properties
 # Define some properties
 workers.apache_log=/var/log/httpd/

workers.tomcat_home=/usr/local/tomcat/jakarta-tomcat-5.5.9
 workers.java_home=/usr/bin/java
 ps=/
 
 #
 worker.list=worker1
 

According to the documentation this should contain a
comma separated list of all the workers.  However, if
you're going to the same Tomcat instance all the time,
you'll only need one worker definition

 # Set properties for worker1 (ajp13)
 worker.worker1.type=ajp13
 worker.worker1.host=172.20.1.19
 worker.worker1.port=8009
 

First of all, there should only be one worker list. 
Second of all, why do you have multiple workers going
to the same host but different ports?  Do you have
multiple Tomcats running on this host?

 #
 worker.list=worker2
 
 # Set properties for worker2 (ajp13)
 worker.worker2.type=ajp13
 worker.worker2.host=172.20.1.19
 worker.worker2.port=10009
 
 #
 worker.list=worker3
 
 # Set properties for worker3 (ajp13)
 worker.worker3.type=ajp13
 worker.worker3.host=127.0.0.1
 worker.worker3.port=8099
 
 #
 worker.list=worker4
 
 # Set properties for worker4 (ajp13)
 worker.worker4.type=ajp13
 worker.worker4.host=172.20.1.19
 worker.worker4.port=8099

Even after all that is done, there are some other
issues when connecting Apache httpd and Tomcat.  If
Apache's DocumentRoot does not correspond to Tomcat's
appBase, then any static files contained in the
application will not be served by Apache without some
more Apache configuration changes.

There are several ways of accomplishing this, using
the Directory directive and Aliases or JkAutoAlias in
Apache's httpd.conf.

/mde/



__ 
Yahoo! Mail - PC Magazine Editors' Choice 2005 
http://mail.yahoo.com

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]