安装oracle JDK
下载软件
Jdk-8u25-linux-x64.rpm
Apache-tomcat-8.0.23.tart.gz
安装jdk
主要的文件在/usr/java
配置java的环境变量
#. /etc/profile.d/java.sh
安装tomcat
有两种安装方法
1)使用yum中的base源
#Yum intsall tomcat tomcat-webapps tomcat-admin-webapps tomcat-docs-webapp
tomcat:主程序包
Tomcat-webapps:是一个初始的页面实例
Tomcat-admin-webapps:管理各个实例的GUI接口页面
Tomcat-docs-webapp:查看tomcat文档的页面实例
2)使用tomcat的二进制发行版
# tar xf apache-tomcat-VERSION.tar.gz -C /usr/local/
# cd /usr/local
# ln -sv apache-tomcat-VERSION tomcat
#cat /etc/profile.d/tomcat.sh
export CATALINA_BASE=/usr/local/tomcat
export PATH=$CATALINA_BASE/bin:$PATH
注意:一下是以第二种方法安装的tomcat进行演示的
tomcat的目录结构
bin:脚本,及启动时用到的类;
conf:配置文件目录;
lib:库文件,Java类库,一般为jar后缀;
logs:日志文件目录;
temp:临时文件目录;
webapps:webapp的默认目录;
work:工作目录;
tomcat的配置文件:
server.xml:主配置文件;
web.xml:每个webapp只有“部署”后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认配置;
context.xml:每个web都可以专用的配置文件,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认配置;
tomcat-users.xml:用户认证的账号和密码文件;
catalina.policy:当使用-security选项启动tomcat时,用于为tomcat设置安全策略;
catalina.properties:Java属性的定义文件,用于设定类加载器路径,以及一些与JVM调优相关参数;
logging.properties:日志系统相关的配置;
tomcat的使用
1)建立以简单应用
# mkidr -pv /usr/local/tomcat/webapps/test/{classes,lib,WEB-INF}
创建文件/usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>Test Page</title>
</head>
<body>
<% out.println("hello world");
%>
</body>
</html>
#catalina.sh start
#ss -tnl 查看是否启动
8080:位web的访问接口
8009:远程控制tomcat的CLI
访问server status和host manager的应用服务
#vim /usr/local/tomcat/conf/tomcat-users.xml 添加下面几行
具体在生产中的应用场景
1)使用LNM
在nginx服务器配置文件
#vim /etc/nginx/nginx.conf
location / {
proxy_pass http://你的tomcat主机ip:8080;
}
2)使用LAM
在httpd中有两种方向代理模块
proxy_http_module:适配http协议客户端;
proxy_ajp_module:适配ajp协议客户端;
在httpd服务器配置文件
#vim /etc/httpd/conf.d/tomcat_proxy.conf
<VirtualHost *:80>
ServerName zorro.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://zorro:8080/
ProxyPassReverse / http://zorro:8080/
<Location />
Require all granted
</Location>
</VirtualHost>
tomcat的集群实现
1)httpd + tomcat cluster
2)nginx + tomcat
Httpd + tomcat cluster
第一种方法的实现:
<proxy balancer://tcsrvs>
BalancerMember http://172.18.100.67:8080
BalancerMember http://172.18.100.68:8080
ProxySet lbmethod=byrequests
</Proxy>
<VirtualHost *:80>
ServerName lb.magedu.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / balancer://tcsrvs/
ProxyPassReverse / balancer://tcsrvs/
<Location />
Require all granted
</Location>
</VirtualHost>
会话粘性的实现方法:
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<proxy balancer://tcsrvs>
BalancerMember http://172.18.100.67:8080 route=TomcatA loadfactor=1
BalancerMember http://172.18.100.68:8080 route=TomcatB loadfactor=2
ProxySet lbmethod=byrequests
ProxySet stickysession=ROUTEID
</Proxy>
<VirtualHost *:80>
ServerName lb.magedu.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / balancer://tcsrvs/
ProxyPassReverse / balancer://tcsrvs/
<Location />
Require all granted
</Location>
</VirtualHost>
nginx + tomcat
定义upstream servers {
Server 172.18.52.1:8080 check ;
Server 172.18.52.5:8080 check;
least_conn;
}
定义一个location进行反向代理
location / {
proxy_pass http://servers;
}
如果压迫实现会话绑定
upstream servers {
Server 172.18.52.1:8080 check ;
Server 172.18.52.5:8080 check;
ip_hash;
}