In this post we will see how to run multiple tomcat instances on a single machine and under a single user account.
We already see how to run tomcat in Ubuntu machine in my previous blog (http://kmlsarwar.blogspot.com/2014/08/how-to-install-apache-tomcat-on-ubuntu.html).
<connector connectiontimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectport="8443">
<connector port="8009" protocol="AJP/1.3" redirectport="8443">
</connector></connector></server>
startup-instance2.sh
export CATALINA_BASE=/usr/local/tomcat/tomcat-instance2
cd $CATALINA_HOME/bin
./startup.sh
Setup
We already see how to run tomcat in Ubuntu machine in my previous blog (http://kmlsarwar.blogspot.com/2014/08/how-to-install-apache-tomcat-on-ubuntu.html).
Step One—Create folder
Create two folder named "tomcat-instance1" and "tomcat-instance2" anywhere, and copy conf, logs, temp, webapps and work folder from CATALINA_HOME folder and change conf/server.xml file in tomcat-instance1 and tomcat-instance2. we need to change 3 port shutdown port, connector port and ajp port.
Shutdown port - this port is used for shutdown the tomcat. when
we call the shutdown.sh script they send signal to shutdown port. this
port listen by tomcat java process. if signal is received the that
process then its cleanup and exit by itself.
Connector Port -This port is actual port to expose the application to outside client.
AJP port - this port is used to apache httpd server communicate to tomcat. this port used when we setup load balanced server.
See the sample server.xml file:
<server port="8005" shutdown="SHUTDOWN">
.....<connector connectiontimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectport="8443">
<connector port="8009" protocol="AJP/1.3" redirectport="8443">
</connector></connector></server>
So we change these three port to different number, because once this
port is binded then other process can't bind it again. so wee bind
different port.
So tomcat-instance1/conf/server.xml file i configured
server port =8105, connector port = 8181, ajp port = 8109.
And tomcat-instance2/conf/server.xml file i configured
server port =8205, connector port = 8282, ajp port = 8209
Step Two—Create Script
Now we create two script file for startup and shutdown the tomcat-instance1 and tomcat-instance2.
startup-instance1.sh
export CATALINA_BASE=/usr/local/tomcat/tomcat-instance1
cd $CATALINA_HOME/bin
./startup.sh
export CATALINA_BASE=/usr/local/tomcat/tomcat-instance1
cd $CATALINA_HOME/bin
./startup.sh
startup-instance2.sh
export CATALINA_BASE=/usr/local/tomcat/tomcat-instance2
cd $CATALINA_HOME/bin
./startup.sh
shutdown-instance1.sh
export CATALINA_BASE= /usr/local/tomcat/tomcat-instance1
cd $CATALINA_HOME/bin
./shutdown.sh
shutdown-instance2.sh
export CATALINA_BASE= /usr/local/tomcat/tomcat-instance2
cd $CATALINA_HOME/bin
./shutdown.sh
Here we explicitly set the CATALINA_BASE variable and point to new tomcat-instance1 and
tomcat-instance1 the we go to CATALINA_HOME/bin folder because all binary for running tomcat is still present in CATALINA_HOME folder then startup/shutdown the script.
tomcat-instance1 the we go to CATALINA_HOME/bin folder because all binary for running tomcat is still present in CATALINA_HOME folder then startup/shutdown the script.
Based on above technique we can create many instance folder and change
conf/server.xml file port values and run that instance with own newly
created script files.
Step Three—Run
We need to give permission to this scripts to execute. Then we run this script with this command
$ ./startup-instance1.sh
$ ./startup-instance2.sh
Once that runs, Two Tomcat are up and ready on port 8181 and 8282.
You can visually verify that Tomcat is working by accessing your server page at
You can visually verify that Tomcat is working by accessing your server page at
your_IP_address:8181 and your_IP_address:8282
We can stop tomcat instance using the shutdown script
$ ./shutdown-instance1.sh
$ ./shutdown-instance2.sh
$ ./shutdown-instance2.sh
This will shutdown the tomcat instance. Enjoy multiple instance of Tomcat!!!
Comments
Post a Comment