Virtual Hosting with Tomcat This is a guide on setting up Tomcat to do virtual hosting and make it behave like a simple webserver with jsp and servlet support, for many different sites all hosted on the same IP address. The aim is to have a single directory for each virtual host, which can be manipulated individually without hassles from managing multiple .war files and other configuration difficulties.
To configure Tomcat for a virtual host, you need a <Host ..> directive in the server.xml file, and a ROOT.xml file in the conf/Catalina/$host directory. Here's the minimal setup required for a copy of Tomcat serving directly on Port 80, using no connectors or other configuration difficulties.
This was written for Tomcat 5 on linux, with Tomcat installed in /usr/local/tomcat
We start with the simplest configuration, of one website, called 'localhost' which keeps it's files in /usr/local/tomcat/webapps/localhost . We're not using any .war files here - all the files are placed straight into the directory.
Adding a virtual host to this config. From here, to add a virtual host $host with an alias of $alias, the following steps are required.
• Shut down tomcat.
• Add a Host entry to the server.xml file at the VIRTUAL HOST INJECTION POINT
• Add a configuration file for the host
• Add a skeleton directory structure for the files
• Add a minimal web.xml file
• Add a trivial holding page
• Start tomcat back up again.
Automating the process For a standard situation with tomcat installed in /usr/local/tomcat, here's a small perl script that does all this for you. Save it into the /usr/local/tomcat/bin directory. http://ex-parrot.com/~pete/add_virtual_host.pl Usage ./bin/add_virtual_host.pl host alias1 alias2 alias3