this setup was done on centos 7
This is my own setup guide for my server.
you can change according to your need
Download the
package from https://tomcat.apache.org/download-70.cgi
Choose
“Core” -> tar.gz to download
Tomcat 7.0
is designed to run on Java SE 6 and later. So download the appropriate version
For more
info, you can Read the RELEASE-NOTES and the RUNNING.txt file in the
distribution for more details.
For easy
installation, I download rpm and use localinstall from Oracle website
# yum localinstall jdk-7u80-linux-x64.rpm
Installation
1 Extract the file and put it at /opt
# tar -zxvf apache-tomcat-7.0.62.tar.gz
2 Install tomcat native
# cd /opt/apache-tomcat-7.0.62/bin
# tar -zxvf tomcat-native.tar.gz
# cd tomcat-native-1.1.33-src/jni/native
Build tc-native requires three components to be installed:
- APR library
- OpenSSL libraries
- Java SE Development Kit (JDK)
# tar -zxvf apache-tomcat-7.0.62.tar.gz
2 Install tomcat native
# cd /opt/apache-tomcat-7.0.62/bin
# tar -zxvf tomcat-native.tar.gz
# cd tomcat-native-1.1.33-src/jni/native
Build tc-native requires three components to be installed:
- APR library
- OpenSSL libraries
- Java SE Development Kit (JDK)
# yum install apr-devel openssl-devel
Now proceed to install the native using this command
# ./configure --with-apr=/usr/bin/apr-1-config --with-java-home=/usr/java/jdk1.7.0_80/ --with-ssl=yes --prefix=/usr
p/s:- Update the java location accordingly
3 Install common-daemon-native
# cd /opt/apache-tomcat-7.0.62/bin
# tar –zxvf commons-daemon-native.tar.gz
# cd commons-daemon-1.0.15-native-src/unix
# ./configure
# cp jsvc ../..
Now proceed to install the native using this command
# ./configure --with-apr=/usr/bin/apr-1-config --with-java-home=/usr/java/jdk1.7.0_80/ --with-ssl=yes --prefix=/usr
p/s:- Update the java location accordingly
3 Install common-daemon-native
# cd /opt/apache-tomcat-7.0.62/bin
# tar –zxvf commons-daemon-native.tar.gz
# cd commons-daemon-1.0.15-native-src/unix
# ./configure
# cp jsvc ../..
Tuning
1 Edit /opt/apache-tomcat-7.0.62/conf/server.xml
Search connectionTimeout and change the value to
600000
Search maxThreads and change the value to 500 (if
got enable)
2 Edit /conf/context.xml
Change all <Context>
To <Context swallowOutput="true">
( it is use to redirect system err to catalina)
3 Edit conf/logging.properties, and add this
1catalina.org.apache.juli.AsyncFileHandler.rotatable
= true
( it is use to rotate the log)
4 Create setenv.sh at bin directory and add this
into it
---------------------------------------------------------------------------------------------------
JAVA_OPTS="-Xms4096m
-Xmx4096m -XX:MaxPermSize=512m -Dorg.jboss.resolver.warning=true
-Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000
-Dsun.lang.ClassLoader.allowArraySyntax=true -Dhttp.maxConnections=500 -XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode"
# Set the
-Xms and -Xmx the same, around 50% to 80% of total memory
# Set the
PermSize to either 256 or 512, increase it if there’s OutOfMemoryError PermGen
space in log
# to see gc memory,
add "-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbose:gc
-Xloggc:/tmp/gc.log"
---------------------------------------------------------------------------------------------------
Startup script
# vim
/etc/init.d/tomcat
#!/bin/sh
#
#
Tomcat startup script
#
#
chkconfig: - 85 15
#
description: Tomcat Server
#
processname: tomcat
#
#
To use this script run it as root - it will switch to the specified user
#
#
Either modify this script for your requirements or just ensure that
#
the following variables are set correctly before calling the script.
#define
where tomcat is - this is the directory containing directories log, bin, conf
etc
CATALINA_HOME=${CATALINA_HOME:-"/opt/tomcat"}
export
CATALINA_HOME
#define
the user under which jboss will run, or use 'RUNASIS' to run as the current
user
TOMCAT_USER=${TOMCAT_USER:-"tomcat"}
export
TOMCAT_USER
#make
sure java is in your path
JAVA_HOME=${JAVA_HOME:-"/usr/java/jdk"}
export
JAVA_HOME
case
"$1" in
start)
$CATALINA_HOME/bin/daemon.sh start
;;
stop)
$CATALINA_HOME/bin/daemon.sh stop
rm -rf $TOMCAT_HOME/work/*
;;
restart)
$0 stop
i=0
while [ `ps ax|grep -v grep|grep jsvc|wc
-l` -gt 0 -a $i -lt 60 ]
do
sleep 1
(( i += 1 ))
done
/usr/bin/killall -9 jsvc
$0 start
;;
*)
echo "usage: $0
(start|stop|restart|help)"
esacedit the java location and tomcat location
then change its permission
# chmod 755 /etc/init.d/tomcat
then create tomcat user
# useradd –s /sbin/nologin tomcat
Change tomcat permission to tomcat
# chown -R tomcat:tomcat apache-tomcat-7.0.62
Add to startup list
# chkconfig --add tomcat
# chkconfig --level 2345 tomcat on
Connect
to mysql
Get the JDBC driver and put to lib
http://www.mysql.com/products/connector/
Edit conf/context.xml
Add under <Context swallowOutput="true">
Below is the example format
--------------------------------------------------------------------------------------------------------------
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/javatest"/>
--------------------------------------------------------------------------------------------------------------
change the word in red accordingly
maxActive = Maximum number of database connections in pool. Make sure you configure your.
mysqld max_connections large enough to handle all of your db connections. Set to -1 for no limit.
maxIdle = Maximum number of idle database connections to retain in pool. Set to -1 for no limit.
maxWait = Maximum time to wait for a database connection to become available in ms, An Exception is thrown if this timeout is exceeded. Set to -1 to wait indefinitely.
1. Install MOD_JK connector
# yum install httpd-devel
Go to https://tomcat.apache.org/download-connectors.cgi and download the source
Configure, make and make install
copy binary file to /etc/http/modules
p/s = if got error saying "error: Cannot find the WebServer"
use this function to find apxs
# find / -iname apxs
then install using this command
# configure --with-apxs=/usr/bin/apxs
# chmod 755 /etc/httpd/modules/mod_jk.so
Create workers.properties
Change the node name according to the same as the servers name. If you follow the startup, location is define in mod_jk.conf
--------------------------------------------------------------------------------------------------------------------
worker.list=worker1,node1,node2,status #node name you want to use add this in server.xml
worker.jkstatus.type=status
#node1
worker.node1.port=8009
worker.node1.host=10.0.3.129
worker.node1.type=ajp13
worker.node1.lbfactor=1
worker.node1.ping_mode=A
#worker.node1.cachesize=10
#node2
worker.node2.port=8009
worker.node2.host=10.0.3.130
worker.node2.type=ajp13
worker.node2.lbfactor=3
worker.node2.ping_mode=A
#worker.node2.cachesize=10
# Load-balancing behaviour
worker.worker1.type=lb
worker.worker1.balance_workers=node1,node2
worker.worker1.sticky_session=1
--------------------------------------------------------------------------------------------------------------------
Create mod_jk.conf
-------------------------------------------------------------------------------------------------------------------
LoadModule jk_module modules/mod_jk.so
<IfModule mod_jk.c>
JkWorkersFile /data/sys/etc/httpd/workers.properties
JkShmFile /var/log/httpd/mod_jk.shm
JkLogFile /var/log/httpd/mod_jk.log
JkLogLevel info,debug
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkMount /app/* worker1 #mount this url, edit as neccessary
# DO NOT MOUNT EVERYTHING!
</IfModule>
------------------------------------------------------------------------------------------------------------------
maxIdle = Maximum number of idle database connections to retain in pool. Set to -1 for no limit.
maxWait = Maximum time to wait for a database connection to become available in ms, An Exception is thrown if this timeout is exceeded. Set to -1 to wait indefinitely.
Apache
Install
apache and fine tune it
1. Install MOD_JK connector
# yum install httpd-devel
Go to https://tomcat.apache.org/download-connectors.cgi and download the source
Configure, make and make install
copy binary file to /etc/http/modules
p/s = if got error saying "error: Cannot find the WebServer"
use this function to find apxs
# find / -iname apxs
then install using this command
# configure --with-apxs=/usr/bin/apxs
# chmod 755 /etc/httpd/modules/mod_jk.so
Create workers.properties
Change the node name according to the same as the servers name. If you follow the startup, location is define in mod_jk.conf
--------------------------------------------------------------------------------------------------------------------
worker.list=worker1,node1,node2,status #node name you want to use add this in server.xml
worker.jkstatus.type=status
#node1
worker.node1.port=8009
worker.node1.host=10.0.3.129
worker.node1.type=ajp13
worker.node1.lbfactor=1
worker.node1.ping_mode=A
#worker.node1.cachesize=10
#node2
worker.node2.port=8009
worker.node2.host=10.0.3.130
worker.node2.type=ajp13
worker.node2.lbfactor=3
worker.node2.ping_mode=A
#worker.node2.cachesize=10
# Load-balancing behaviour
worker.worker1.type=lb
worker.worker1.balance_workers=node1,node2
worker.worker1.sticky_session=1
--------------------------------------------------------------------------------------------------------------------
Create mod_jk.conf
-------------------------------------------------------------------------------------------------------------------
LoadModule jk_module modules/mod_jk.so
<IfModule mod_jk.c>
JkWorkersFile /data/sys/etc/httpd/workers.properties
JkShmFile /var/log/httpd/mod_jk.shm
JkLogFile /var/log/httpd/mod_jk.log
JkLogLevel info,debug
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkMount /app/* worker1 #mount this url, edit as neccessary
# DO NOT MOUNT EVERYTHING!
</IfModule>