tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From André Warnier>
Subject Re: General errors in virtual host setup
Date Wed, 13 May 2009 18:03:19 GMT
Trying to provide some limited help peppered across your message..

Dave Filchak wrote:
> A few days ago, a number of you helped me get tomcat up and running with 
> the example files shipped with the default install of tomcat. Just as a 
> reminder, I am on CentOS 5.4/64 bit system using jdk1.6.1_13, apache 
> tomcat 6.0.18.
> I was going through this exercise because I was given a tomcat based 
> site to host for the next while. Having never dealt with tomcat before, 
> with the help of a few members of this list, I managed to get tomcat 
> running. So then I came to the task of getting this site going. So, here 
> is what I did an I hope if anyone sees anything off base (likely) they 
> will point it out to me.
> First I created a war file of the site pages using java -cvf exodus.war *

That was more likely "jar -cvf exodus.war *", right ?

> I then put the war file inside my webapps directory at 
> /usr/opt/tomcat/webapps/ (this is the same directory for my default host)

Ok, so we assume your tomcat's CATALINA_HOME and CATALINA_BASE are both 
/usr/opt/tomcat, and below that you have directories like
- bin
- conf
- webapps
- logs
right ?

> I then restarted tomcat and it expanded the war file to create a 
> directory under webapps called exodus
> In this new directory, there is a WEB-INF directory and a META-INF 
> directory.

That looks ok so far.

> I edited the web.xml file from inside WEB-INF to reflect the current 
> server environment, which included the following:
>    <context-param>
>   <param-name>root</param-name>

.. etc..
that unfortunately is a part we cannot help you with, probably. It is a 
series of parameters specific to that "exodus" application which 
probably nobody here knows.

That comment extends all the way to

>   </paths> 
> (Sorry if the above was not necessary to send but wanted to be thorough).

> My server.xml file was edited to look like this:
> <?xml version='1.0' encoding='utf-8'?>
> <Server port="8005" shutdown="SHUTDOWN">
>  <!--APR library loader. Documentation at /docs/apr.html -->
>  <Listener className="org.apache.catalina.core.AprLifecycleListener" 
> SSLEngine="on" />
>  <!--Initialize Jasper prior to webapps are loaded. Documentation at 
> /docs/jasper-howto.html -->
>  <Listener className="org.apache.catalina.core.JasperListener" />
>  <!-- JMX Support for the Tomcat server. Documentation at 
> /docs/non-existent.html -->
>  <Listener 
> className="org.apache.catalina.mbeans.ServerLifecycleListener" />
>  <Listener 
> className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListen
> er" />
>  <!-- <Listener className="org.apache.ajp.tomcat.config.ApacheConfig" 
> modJk="/usr/local/apache2/modules/" /> -->
>  <!-- Global JNDI resources
>       Documentation at /docs/jndi-resources-howto.html
>  -->
>  <GlobalNamingResources>
>    <!-- Editable user database that can also be used by
>         UserDatabaseRealm to authenticate users
>    -->
>    <Resource name="UserDatabase" auth="Container"
>              type="org.apache.catalina.UserDatabase"
>              description="User database that can be updated and saved"
>              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
>              pathname="conf/tomcat-users.xml" />
>  </GlobalNamingResources>
>  <Service name="Catalina">
>    <Connector port="8080" protocol="HTTP/1.1"
>               connectionTimeout="20000"
>               redirectPort="8443" />
>    <!-- Define an AJP 1.3 Connector on port 8009 -->
>    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Note that, apparently, you only have an AJP connector listening on port 
8009.  You do not have one for port 8010.

>    <Engine name="Catalina" defaultHost="localhost">
>    <Host name="localhost" appBase="webapps"
>          unpackWARs="true" autoDeploy="true"
>              xmlValidation="false" xmlNamespaceAware="false">
>        </Host>
>    <Host name="" appBase="webapps/exodus"
>        unpackWARs="true" autoDeploy="true"
>        xmlValidation="false" xmlNamespaceAware="false">
>    </Host>

So, are we to think that this server is known in DNS by the name 
"" ?

>      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
>             resourceName="UserDatabase"/>
>    </Engine>
>  </Service>
> </Server>
> With this, I am wondering if I have the exodus directory in the right 
> place as it crosses into the default host space.
> My file now looks like:
> worker.list=rosewood,exodus
> #
> # Defining a worker named ajp13w and of type ajp13
> # Note that the name and the type do not have to match.
> #
> worker.rosewood.type=ajp13
> worker.rosewood.port=8009
> worker.exodus.type=ajp13

Here you should better say, also,

> worker.exodus.port=8010

That is why I am surprised that there is no <Connector> for port 8010 in 
your server.xml.
If we are talking all about the same single host, then you need to add 
it. Just copy the one for 8009 and change the port number.

Otherwise, the worker "exodus" won't be able to connect to Tomcat.

(In fact, if this is all on the same system, I think you can simplify 
this configuration, but let's first try and make this one work).

> I have then modified the apache conf and added:
> JkMount /exodus/* exodus
> JkUnMount  /images/* exodus
What the above lines do is this :
JkMount /exodus/* exodus

 From the point of view of Apache httpd, mod_jk is a "content handler". 
  That is, for Apache, it is mod_jk which generates the response that 
will be sent to the browser.
When Apache receives a request (any request), it will pass it first to 
mod_jk. mod_jk then decides whether this is a URL for which it will 
generate the content itself, or not.  If not, it returns a "declined" 
response to Apache.  Apache then passes the same request to any other 
defined content handlers, which do the same thing.  If all return 
"declined", then Apache uses its own default content handler to process 
this request.

JkMount tells mod_jk which request URLs it needs to process.
(of course mod_jk does not process these requests itself, it passes them 
to Tomcat for that, through the "worker" indicated in the same command. 
But Apache doesn't know that).
JkUnMount is a list of exceptions.  Basically it tells mod_jk "although 
we've told you to process all requests with URLs that match "/exodus/*", 
well, the ones that match "/exodus/images/*" are an exception, and for 
those ýou should return "declined" and let Apache handle them.

Note however that "/images/*" does not match "/exodus/*", so what you 
really meant may have been :
JkUnMount /exodus/images/* exodus

(and of course that would mean that you do have a subdirectory 
/exodus/images/ under your Apache DocumentRoot, with presumably images 
in it.
If that is not the case, then just comment out this JkUnMount and let 
those images be served by Tomcat also.
(Because then you presumably have a directory 
/usr/opt/tomcat/webapps/exodus/images. Do you ?)

 > So, what is currently happening when I go to the site is that, the
 > index.jsp page gets rendered as text. I have added index.jsp as a
 > default page in httpd.conf but it says to me that apache is NOT speaking
 > to tomcat properly in this configuration. Hopefully someone can put me
 > straight on this. And sorry for all the info but again, I wanted to make
 > sure that I had showed all that I had done.

That, I do not really understand.  But hopefully with the above you 
should be getting one step further.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message