# The Apache Tomcat 5.5 Servlet/JSP Container

## Virtual Hosting and Tomcat

Table of Contents

> - Assumptions
> - server.xml
> - Webapps Directory
> - Configuring Your Contexts
>   1. General
>   2. context.xml - approach #1
>   3. context.xml - approach #2
>   4. Further Information

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/

> Further Information

> > Consult the configuration documentation for other attributes of the Context element.

Copyright © 1999-2011, Apache Software Foundation