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. Related Administrations Configurations (Linux)
pressflow varnish installation and configuration March 24, 2013March 24, 2013 Installation Varnish is the key software that speeds up your web site. It is Open Source, built on industry standards and requires very few resources. Varnish is distributed in the EPEL (Extra Packages for Enterprise Linux) package repositories. However, while EPEL allows new versions to be distributed, it does not… Read More
Install Collabora Online on Ubuntu 20 for Nextcloud February 24, 2023 First, log in to your Ubuntu 20.04 server through SSH as the root user or any other user with sudo privileges: ssh root@IP_Address -p Port_number You will need to replace ‘IP_Address‘ and ‘Port_number‘ with your server’s respective IP address and SSH port number. Additionally, replace ‘root’ with the username of… Read More
Proxmox create VXLAN using its native SDN January 12, 2024 Prerequisite: You need to have an Installed Proxmox and Configure a Clustered setup. The first step in any installation is to make sure your hosts are updated. By default, Proxmox hosts will reach out to the enterprise repository, so I need to configure the pve-no-subscription repository. To enable that, I… Read More