How to setup multiple instances of Tomcat 7 in Ubuntu

I was trying to learn Spring MVC and was interested to setup a dedicated instance of Apache Tomcat 7 for the pet project rather than using the single installed instance. I used a Ubuntu 12.04 LTS desktop edition while performing the below steps.

Using a dedicated instance rather than a general instance would allow me load custom libraies and not tamper with the settings and libraries utilized by the general instance of Tomcat 7.

Step 1: Install the tomcat7-user package.

sudo apt-get install tomcat7-user

Step 2: Setup a parent folder where you would like to store the instance specific configuration and libraries

mkdir $HOME/Workspace/github/springapp

I have specified a path specific to my project folder. You can choose any folder of your choice.

Step 3: Use the tomcat7-instance-create command to create and configure the Tomcat 7 instance folder at $HOME/Workspace/github/springapp/tomcat.

tomcat7-instance-create $HOME/Workspace/github/springapp/tomcat

# SYNOPSIS FOR REFERENCE
#       tomcat7-instance-create [OPTIONS] DIRECTORYNAME

The default port used by the instance would be 8080. If you would like have the new instance listen to a different port, use the -p switch. This is useful when you like to have both the general and the dedicated instance of Tomcat running simulataneously.

Similary, the -c switch allows us to specify a control port which can be used to send ‘Magic Words’ that cause Tomcat to trigger specific actions. For instance, the default magic word to gracefully shutdown Tomcat is SHUTDOWN and the default control port is 8005.

As an example, to have Tomcat listen on port 8085 with control port being 8010 and the Magic Word to shutdown Tomcat being TAKEYOURLOADOFF:

tomcat7-instance-create -p 8085 -c 8010 -w TAKEYOURLOADOFF $HOME/Workspace/github/springapp/tomcat

The output would be similar to:

You are about to create a Tomcat instance in directory '$HOME/Workspace/github/springapp/tomcat'
* New Tomcat instance created in $HOME/Workspace/github/springapp/tomcat
* You might want to edit default configuration in $HOME/Workspace/github/springapp/tomcat/conf
* Run $HOME/Workspace/github/springapp/tomcat/bin/startup.sh to start your Tomcat instance

Note: The variable $HOME would be replaced with the absolute path of the directory in your output.

To learn more about the options available for the tomcat7-instance-create command, please refer the man page:

[man tomcat7-instance-create][3]

Step 4: Start the new instance of Tomcat 7.

settipalli@settipalli-ubuntu:~/Workspace/github/springapp$ tomcat/bin/startup.sh
Using CATALINA_BASE:   $HOME/Workspace/github/springapp/tomcat
Using CATALINA_HOME:   /usr/share/tomcat7
Using CATALINA_TMPDIR: $HOME/Workspace/github/springapp/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar
Tomcat started

Step 5: To verify if the new instance of Tomcat has loaded successfully, navigate to ‘localhost:8085‘ in your web-browser. You would be greeted with an empty page. This is normal.

To confirm if Tomcat has started and is listening on the specific ports, execute the below command.

settipalli@settipalli-ubuntu:~/Workspace/github/springapp$ netstat -punta | grep java
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp6       0      0 :::8085                 :::*                    LISTEN      4862/java
tcp6       0      0 127.0.0.1:8010          :::*                    LISTEN      4862/java

To reconfirm if everthing is fine, look into the logs at: $HOME/Workspace/github/springapp/tomcat/logs/localhost_access_log..txt. The content should be similar to:

127.0.0.1 - - [30/Jan/2015:04:03:55 +0530] "GET / HTTP/1.1" 404 -
127.0.0.1 - - [30/Jan/2015:04:03:56 +0530] "GET /favicon.ico HTTP/1.1" 404 -

Since we have not configured any web-apps to be servered by Tomcat, 404 response is valid.

Similary, review $HOME/Workspace/github/springapp/tomcat/logs/catalina.out for Tomcat startup messages.

To shutdown the instance, use the below command:

settipalli@settipalli-ubuntu:~/Workspace/github/springapp$ tomcat/bin/shutdown.sh

# Sample Output of the command
Using CATALINA_BASE:   /home/settipalli/Workspace/github/springapp/tomcat
Using CATALINA_HOME:   /usr/share/tomcat7
Using CATALINA_TMPDIR: /home/settipalli/Workspace/github/springapp/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar
Jan 30, 2015 4:11:31 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/var/lib/tomcat7/common/classes], exists: [false], isDirectory: [false], canRead: [false]
Jan 30, 2015 4:11:31 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/var/lib/tomcat7/common], exists: [false], isDirectory: [false], canRead: [false]
Jan 30, 2015 4:11:31 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/var/lib/tomcat7/server/classes], exists: [false], isDirectory: [false], canRead: [false]
Jan 30, 2015 4:11:31 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/var/lib/tomcat7/server], exists: [false], isDirectory: [false], canRead: [false]
Jan 30, 2015 4:11:31 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/var/lib/tomcat7/shared/classes], exists: [false], isDirectory: [false], canRead: [false]
Jan 30, 2015 4:11:31 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/var/lib/tomcat7/shared], exists: [false], isDirectory: [false], canRead: [false]
Tomcat stopped

References:
1. Add another instance of Tomcat, on Ubuntu
2. How to install Multiple instances of tomcat on a single ubuntu server
3. tomcat7-instance-create – Gists – GitHub
4. Ubuntu 12.04.5 LTS (Precise Pangolin)
5. Man page of tomcat7-instance-create

Advertisements

2 thoughts on “How to setup multiple instances of Tomcat 7 in Ubuntu

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s