The Apache Tomcat Servlet/JSP Container

Apache Tomcat 7

Version 7.0.94, Apr 10 2019
Apache Logo

Links

User Guide

Reference

Apache Tomcat Development

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.

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.


Copyright © 1999-2019, Apache Software Foundation