Virtual Hosting and Tomcat
Table of Contents
Assumptions
For the sake of this how-to, assume you have a development host with two
host names, ren
and stimpy
. Let's also assume
one instance of Tomcat running, so $CATALINA_HOME
refers to
wherever it's installed, perhaps /usr/local/tomcat
.
Also, this how-to uses Unix-style path separators and commands; if you're on Windows modify accordingly.
server.xml
At the simplest, edit the Engine portion
of your server.xml
file to look like this:
<Engine name="Catalina" defaultHost="ren">
<Host name="ren" appBase="renapps"/>
<Host name="stimpy" appBase="stimpyapps"/>
</Engine>
Note that the directory structures under the appBase for each host should not overlap each other.
Consult the configuration documentation for other attributes of the Engine and Host elements.
Webapps Directory
Create directories for each of the virtual hosts:
mkdir $CATALINA_HOME/renapps
mkdir $CATALINA_HOME/stimpyapps
Configuring Your Contexts
General
Contexts are normally located underneath the appBase directory. For
example, to deploy the foobar
context as a war file in
the ren
host, use
$CATALINA_HOME/renapps/foobar.war
. Note that the
default or ROOT context for ren
would be deployed as
$CATALINA_HOME/renapps/ROOT.war
(WAR) or
$CATALINA_HOME/renapps/ROOT
(directory).
NOTE: The docBase
for a context should never be
the same as the appBase
for a host.
context.xml - approach #1
Within your Context, create a META-INF
directory and then
place your Context definition in it in a file named
context.xml
. i.e.
$CATALINA_HOME/renapps/ROOT/META-INF/context.xml
This makes deployment easier, particularly if you're distributing a WAR
file.
context.xml - approach #2
Create a structure under $CATALINA_HOME/conf/Catalina
corresponding to your virtual hosts, e.g.:
mkdir $CATALINA_HOME/conf/Catalina/ren
mkdir $CATALINA_HOME/conf/Catalina/stimpy
Note that the ending directory name "Catalina" represents the
name
attribute of the
Engine element as shown above.
Now, for your default webapps, add:
$CATALINA_HOME/conf/Catalina/ren/ROOT.xml
$CATALINA_HOME/conf/Catalina/stimpy/ROOT.xml
If you want to use the Tomcat manager webapp for each host, you'll also need to add it here:
cd $CATALINA_HOME/conf/Catalina
cp localhost/manager.xml ren/
cp localhost/manager.xml stimpy/
Defaults per host
You can override the default values found in conf/context.xml
and conf/web.xml
by specifying the new values in files
named context.xml.default
and web.xml.default
from the host specific xml directory.
Following our previous example, you could use
$CATALINA_HOME/conf/Catalina/ren/web.xml.default
to customize the defaults for all webapps that are deployed in the virtual
host named ren
.
Further Information
Consult the configuration documentation for other attributes of the Context element.