Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Guide to setting up Apache2 with multiple distinct Tomcat 7 instances

Tags:

apache

tomcat

I realize this question has probably been asked numerous times, but I have not been able to find a good, up-to-date answer. The only guide I have been able to find was from 2005 and was on tomcat 5. It seems a lot of the OS paths have changed.

Our situation is this:

We want to run multiple instances of tomcat 7 on a single server. Each tomcat serves up a different address. For instance, www.oursite.com should be served from a separate tomcat than test.oursite.com. So, for example the base tomcat installtion will sit in /opt/tomcat/ and the instance specific directories (this is what I could make out from that old tutorial) will be in /home/user1/some/path/ and /home/user2/some/path so that everything is seperated nicely.

Can anyone point to a good tutorial, or maybe explain here the steps to set this up? I'm a bit new to apache setups.

Are there any advantages / drawbacks to doing it this way? Would a single tomcat instance be better? We need to be able to bring down sites one at a time without influencing each other. Also, our DNS provider prevents us from setting up stealth redirects, so we have to go through apache to have nice URLs rather than redirecting straight to the tomcats.

Thanks

like image 552
Nico Huysamen Avatar asked Apr 02 '12 16:04

Nico Huysamen


People also ask

Can I have multiple instances of Tomcat Server on single machine?

Install multiple tomcat instancesYou can create multiple Tomcat instances that point to the <tomcat_home>/webapps directory. These Tomcat instances run as separate processes with their own long files, port numbers, and resources.


1 Answers

I believe you have 2 questions here:

  1. How to run multiple tomcat instances in the same server and should you?
  2. How to configure apache httpd to do virtual host and front tomcat?

For 1. The following is a very good tutorial on how to run multiple tomcat instances in the same server: http://java.dzone.com/articles/running-multiple-tomcat, but should you? the answer is "it depends". If you have a super powerful box and it is under utilized, you should. It also depends on what type of application you runs for each individual sites. It will definitely help you "bring down sites one at a time without influencing each other". With apache httpd configuration which I will explain in the next section, you can also run the each site on separate machines (physical or vm).

For 2. In you case, you just need to configure apache httpd to do virtual host and use ajp to connect to tomcat.

<VirtualHost *:80>
    ServerName www.oursite.com

    ProxyPass / ajp://tomcat.oursite.com:8009/www retry=5
    ProxyPassReverse / ajp://tomcat.oursite.com:8009/www
</VirtualHost>

<VirtualHost *:80>
    ServerName test.oursite.com

    ProxyPass / ajp://tomcat.oursite.com:8010/test retry=5
    ProxyPassReverse / ajp://tomcat.oursite:8010/test
 </VirtualHost>

In the above configuration, you need to configure DNS entries of both www.yoursite.com and test.yoursite.com to point to the same host. It also assume you run both your www and test webapps on different tomcat instances on the same host tomcat.oursite.com, one on ajp port 8009 and the other one on ajp port 8010. You can also change it to a different server of its own. It's very flexible. FYI, following is how to configure ajp in tomcat: http://tomcat.apache.org/tomcat-6.0-doc/config/ajp.html

like image 166
hhe Avatar answered Nov 15 '22 03:11

hhe