Tomcat Knowledge
Program Language(Difference: performance and development cycle)
System level: C / C++ / go
Application level(need VM): C# / Java / Python / Perl / Ruby
Dynamic Website: Java (servlet, jsp) / Python (Django, Flask) / Perl (module) / Ruby (ror) / PHP
webapp server
jsp --> tomcat, jboss, jetty
php --> php-fpm
python --> Django
JDK: Java Development Kit
JVM: Java Virtual Machine
Installation
Java Installation
1. install jdk: rpm -ivh jdk...rpm
2. check jdk: /usr/java
which java version is using: latest link to which one
3. configure the environment parameter
#vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
#. /etc/profile.d/java.sh
#java -version
Tomcat Installation
1. uncompress tomcat package:
#tar xvf apache-tomcat... -C /usr/local/apache-tomcat-7.0.55
#ln -sv apache-tomcat-7.0.55 tomcat
2. configure the environment parameter
#vim /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA/bin:$PATH
#. /etc/profile.d/tomcat.sh
3. change configure
#vim /usr/local/tomcat/conf/server.xml
change from
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectport="8443" />
to
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" />
4. start the tomcat
#catalina start
5. add virtual host
A. tomcat server
#vim /usr/local/tomcat/conf/server.xml
<Host name="www.lianshu.com" appBase="/app" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="test" reloadable="true" />
</Host>
#mkdir -p /app/test
#cd /app/test
#vim index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>JSP test Page</title>
</head>
<body>
<% out.println("Hello,world"); %>
</body>
</html>
#catalina stop
#catalina start
B. Client
Change localhost host file
6. add another virtual host
A. tomcat
#unzip shop...
#mv shop... /app
#ln -sv shop... shop
#vim /usr/local/tomcat/conf/server.xml
i. Add "URIEncoding=UTF-8" into Connector
ii. Add
<Context path="/test" docBase="test" reloadable="true" />
<Context path="" docBase="shop" reloadable="true" />
</Host>
#catalina stop
#catalina start
B. mysql
mysql>create database shop;
mysql>grant all on shop.* to shop@'12.11.0.101' identified by "123456";
mysql>flush privileges;
#catalina stop
#catalina start
Tomcat Config File (server.xml)
1. Top component: Server (tomcat instance)
2. Service component: Service (link connector with engine)
3. Container component: Engine (web container) / Host / Context
4. Connector component: Connector (Monitor IP address and Port)
<Server...
<Service...
<Connector... />
<Engine...
<Host...
<Context....
</Context>
</Host>
</Engine>
</Service>
</Server>
Tomcat Error 1: java.lang.outofmemoryerror permgen space
Solution: Test environment 1GB memory
A. Windows: add following into <Tomcat installation path>\bin\catalina.bat
set JAVA_OPTS="-Xms512m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"
B. Linux: add following into <Tomcat installation path>/bin/catalina.sh
export JAVA_OPTS="-Xms512m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"
Tomcat Load Balance
LAMT: Linux + Apache + Mysql + Tomcat
Protocol: HTTP / AJP
Test: 1 Apache + 2 Tomcat
Tomcat A
1. Stop firewall and selinux
2. Install Tomcat
A. Install JDK
B. Install Tomcat
C. Create folder of application: #mkdir -p /app/web
D. Create test page: #vim index.jsp
<%@ page language="java" %>
<html>
<head><title>TomcatA</title></head> <body><h1><font color="red">TomcatA.example.com</font></h1><table align="centre" border="1"><tr><td>Session ID</td><% session.setAttribute("example.com","example.com"); %><td><%= session.getId() %></td></tr><tr><td>Created on</td><td><%= session.getCreationTime() %></td></tr></table></body>
</html>
E. Change Configuration:
#vim /usr/local/tomcat/conf/server.xml
Add following context
<Host name="www.example.com" appBase="/app" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="web" reloadable="true" />
</Host>
Change from
<Engine name "catalina" defaultHost "localhost">
to
<Engine name "catalina" defaultHost "www.example.com">
F. Start Tomcat: catalina start
Tomcat B
Same as Tomcat A. Only change the context of the test page:
<%@ page language="java" %>
<html>
<head><title>TomcatB</title></head> <body><h1><font color="red">TomcatB.example.com</font></h1><table align="centre" border="1"><tr><td>Session ID</td><% session.setAttribute("example.com","example.com"); %><td><%= session.getId() %></td></tr><tr><td>Created on</td><td><%= session.getCreationTime() %></td></tr></table></body>
</html>
Apache
1. Stop Firewall and selinux
2. Yum Install httpd
3. Check module: httpd -M (balance / http / ajp)
4. Change Configuration
i. http protocol
#vim /etc/httpd/conf.d/mod_http.conf
NameVirtualHost *:80
<Proxy balancer://tcsrvs>
BalancerMember http://172.16.100.7:8080 loadfactor=1
BalancerMember http://172.16.100.8:8080 loadfactor=1
</Proxy>
<VirtualHost *:80>
ServerName www.lianshu.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /status !
ProxyPass / balancer://tcsrvs/
ProxyPassReverse / balancer://tcsrvs/
<Location />
Order deny,allow
Allow from all
</Location>
</VirtualHost>
ii ajp protocol
#vim /etc/httpd/conf.d/mod_ajp.conf
NameVirtualHost *:80
<Proxy balancer://tcsrvs>
BalancerMember ajp://172.16.100.7:8009 loadfactor=1
BalancerMember ajp://172.16.100.8:8009 loadfactor=1
</Proxy>
<VirtualHost *:80>
ServerName www.lianshu.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /status !
ProxyPass / balancer://tcsrvs/
ProxyPassReverse / balancer://tcsrvs/
<Location />
Order deny,allow
Allow from all
</Location>
</VirtualHost>
#mv /etc/httpd/conf.d/mod_http.conf /etc/httpd/conf.d/mod_http.conf.bak
5. Start httpd service
6. Set cookie bind
i. Change httpd config
from
ProxyPass /balancer://tcsrvs/
ProxyPassReverse / balancer://tcsrvs/
to
ProxyPass / balancer://tcsrvs/ stickysession=JSESSIONID
ProxyPassReverse / balancer://tcsrvs/ stickysession=JSESSIONID
ii Change tomcat config
Tomcat A
#vim /usr/local/tomcat/conf/server.xml
from
<Engine name="catalina" defaultHost="www.example.com">
to
<Engine name="catalina" defaultHost="www.example.com" jvmRoute="tomcatA">
Tomcat B
#vim /usr/local/tomcat/conf/server.xml
from
<Engine name="catalina" defaultHost="www.example.com">
to
<Engine name="catalina" defaultHost="www.exmaple.com" jvmRoute="tomcatB">
Attention: if you do not want to proxy using following example
ProxyPass /status !
Comments
Post a Comment