Skip to content
Bots!
Bots!
  • About
    • Myself
    • আমার দোয়া
  • Bookmarks
    • Bookmarks
    • My OCI Bookmarks
    • Useful Proxmox Commands & Links
    • Learning Nano
    • Useful Sites
    • Useful Virtualbox Command
    • Useful MySQL Command
    • Useful Linux Command
    • BTT-CAS
  • Resources
    • Webinar on Cloud Adoption for Project Managers
  • Photos
  • Videos
  • Downloads
Bots!

Virtual Hosting with Tomcat

Rumi, May 30, 2011

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.

conf/server.xml

<Server port="8005" shutdown="SHUTDOWN" debug="0">

  <!-- Define the Tomcat Stand-Alone Service -->
  <Service name="Catalina">
    
        <!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
    <Connector port="80"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000" 
               disableUploadTimeout="true" />

                <Engine name="Catalina" defaultHost="localhost" debug="0">

   
      <!-- Define the default virtual host
           Note: XML Schema validation will not work with Xerces 2.2.
       -->
      <Host name="localhost" debug="0" appBase="webapps/localhost"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
        <Logger className="org.apache.catalina.logger.FileLogger"
                 directory="logs"  prefix="localhost_log." suffix=".txt"
            timestamp="true"/>
      </Host>

         <!-- VIRTUAL HOST INJECTION POINT -->
          
    </Engine>

  </Service>

</Server>

conf/Catalina/localhost/ROOT.xml

<?xml version='1.0' encoding='utf-8'?>
<Context displayName="localhost" docBase="" path=""
workDir="work/Catalina/localhost/_">
</Context>

webapps/localhost

index.jsp
WEB-INF/web.xml

webapps/localhost/WEB-INF/web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
</web-app>

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
    <Host name="$host" debug="0" appBase="webapps/$host"
            unpackWARs="true" autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">
    
    <Logger className="org.apache.catalina.logger.FileLogger"
    directory="logs"  prefix="$host\_log." suffix=".txt" timestamp="true"/>
    
    <Alias>$alias</Alias>
    </Host>
    
  • Add a configuration file for the host
    mkdir conf/Catalina/$host
    
    cat >conf/Catalina/$host/ROOT.xml
    <?xml version='1.0' encoding='utf-8'?>
    <Context displayName="$host" docBase="" path=""
    workDir="work/Catalina/$host/_">
    </Context>
    ^D
    
    
  • Add a skeleton directory structure for the files
    mkdir $tomcatdir/webapps/$host
    mkdir $tomcatdir/webapps/$host/WEB-INF
    mkdir $tomcatdir/webapps/$host/WEB-INF/classes
    mkdir $tomcatdir/webapps/$host/WEB-INF/lib
    
  • Add a minimal web.xml file
    cat >webapps/$host/WEB-INF/web.xml
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app>
    </web-app>
    
  • Add a trivial holding page
    cat >index.jsp
    <html>
    <head>
    <title>Not yet configured</title>
    </head>
    
    <body>
    <p>This virtual server $host is not yet configured.</p>
    </body>
    </html>
    
  • Start tomcat back up again.
Administrations Configurations (Linux)

Post navigation

Previous post
Next post

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Myself…

Hi, I am Hasan T. Emdad Rumi, an IT Project Manager & Consultant, Virtualization & Cloud Savvyfrom Dhaka, Bangladesh. I have prior experience in managing numerous local and international projects in the area of Telco VAS & NMC, National Data Center & PKI Naitonal Root and CA Infrastructure. Also engaged with several Offshore Software Development Team.

Worked with Orascom Telecom-Banglalink, Network Elites as VAS partner, BTRC, BTT (Turkey) , Mango Teleservices Limited and Access to Informaiton (A2I-UNDP)

Currently working at Oracle Corporation as Principal Technology Solution and Cloud Architect.

You can reach me [h.t.emdad at gmail.com] and I will be delighted to exchange my views.

Tags

Apache Bind Cacti CentOS CentOS 6 CentOS 7 Debain Debian Debian 10 Debian 11 Debian 12 DKIM Docker endian icinga iptables Jitsi LAMP Letsencrypt Linux Munin MySQL Nagios Nextcloud NFS nginx pfsense php Postfix powerdns Proxmox RDP squid SSH SSL Ubuntu Ubuntu 16 Ubuntu 18 Ubuntu 20 Varnish virtualbox vpn Webmin XCP-NG zimbra

Topics

Recent Posts

  • Install Jitsi on Ubuntu 22.04 / 22.10 April 30, 2025
  • Key Lessons in life April 26, 2025
  • Create Proxmox Backup Server (PBS) on Debian 12 April 19, 2025
  • Add Physical Drive in Proxmox VM Guest April 19, 2025
  • Mount a drive permanently with fstab in Linux April 16, 2025
  • Proxmox 1:1 NAT routing March 30, 2025
  • Installation steps of WSL – Windows Subsystem for Linux March 8, 2025
  • Enabling Nested Virtualization In Proxmox March 8, 2025
  • How to Modify/Change console/SSH login banner for Proxmox Virtual Environment (Proxmox VE / PVE) March 3, 2025
  • Install Proxmox Backup Server on Debian 12 February 12, 2025

Archives

Top Posts & Pages

  • Install Jitsi on Ubuntu 22.04 / 22.10
©2025 Bots! | WordPress Theme by SuperbThemes
Bots!
Bots!
  • About
    • Myself
    • আমার দোয়া
  • Bookmarks
    • Bookmarks
    • My OCI Bookmarks
    • Useful Proxmox Commands & Links
    • Learning Nano
    • Useful Sites
    • Useful Virtualbox Command
    • Useful MySQL Command
    • Useful Linux Command
    • BTT-CAS
  • Resources
    • Webinar on Cloud Adoption for Project Managers
  • Photos
  • Videos
  • Downloads