1.环境配置
1.1什么是Tomcat?
- Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成
- Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
- 对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
- 当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。
1.2 配置实验环境
(1)解压jdk及tomcat安装包
tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/ ##解压jdk和tomcat的安装包
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
cd /usr/local ##做好软连接便于访问
ln -s jdk1.7.0_79/ java
ln -s apache-tomcat-7.0.37/ tomcat
(2)Tomcat所需java环境的配置
由于tomcat是基于java环境变量jdk下运行的web服务器,所以需要配置jdk环境
vim /etc/profile
export JAVA_HOME=/usr/local/java ##JAVA_HOME路径以先前解压安装包路径为主
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile ##让文件生效
测试:
[root@server1 local]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin:/usr/local/java/bin
[root@server1 local]# echo $CLASSPATH
.:/usr/local/java/lib:/usr/local/java/jre/lib
[root@server1 local]# echo $JAVA_HOME
/usr/local/java
[root@server1 local]# which java
/usr/local/java/bin/java
[root@server1 local]# which javac
/usr/local/java/bin/javac
vim test.java
public class test
{
public static void main(String[] args)
{
System.out.println("Hello World1");
}
}
javac test.java ##java编译
java test ##执行文件
(3)启动 tomcat以及nginx
nginx ##nginx的启动(nginx的编译安装见之前博客)
##nginx在路径/usr/local/nginx下
cd /usr/local/tomcat ##tomcat的启动
bin/startup.sh
netstat -antulp ##查看8080端口是否开启(tomcat是否启动)
2.tomcat静动态页面的访问
实验一:访问tomcat的静态页面
(1)配置:
cd /uar/local/tomcat/webapps/ROOT
vim test.jsp ##tomcat的发布默认目录是tomcat/webapps/ROOT 发布文件以.jsp结尾
server1-The time is: <%=new java.util.Date() %>
wq ##退出保存
cd /usr/local/tomcat/
bin/shutdowm.sh ##重启tomcat
bin/startup.sh
(2)测试:
在浏览器中http://172.25.254.111:8080可以看到tomcat默认发布页面
访问http://172.25.254.11:8080/test.jsp 可以看到编辑内容:
实验二:访问tomcat动态交互数据页面(增加测试界面)
(1)配置:
vim test.jsp ##修改访问网页文件内容
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("<b>Session list</b>");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
name:<input type=text size=20 name="dataName">
<br>
key:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
(2)测试:
访问:刷新之前页面
3.nginx对tomcat实现负载均衡
nginx做负载均衡器,需要两台tomcat服务器,其中一台服务器可与nginx负载均衡器共同配置;也就是说只需要两台实验虚拟机,一台做tomcat服务器;另一台既做tomcat服务器又做nginx负载均衡器
- 对两台tomcat服务器配置
编写发布页面(两台服务器都做,为了看到效果,两个界面编写内容不同):
cd /usr/local/tomcat/webapps/ROOT/
vim test.jsp
##服务器1:
server1-The time is: <%=new java.util.Date() %>
##服务器2:
server2-The time is: <%=new java.util.Date() %>
在浏览器中分别访问可以看到:
server1:
server2:
- 对nginx负载均衡器配置
vim /usr/local/nginx/conf/nginx.conf ##配置配置文件
upstream tomcat { ##upstream负载均衡模块
server 172.25.254.111:8080; ##服务器1(不仅可以实现主机负载均衡还可以实现端口的负载均衡)
server 172.25.254.112:8080; ##服务器2
}
location / {
root /usr/local/tomcat/webapps/ROOT; ##tomcat默认发布目录
index index.html index.htm;
}
location ~ \.jsp$ { ##调用负载均衡模块
proxy_pass http://tomcat;
}
nginx -t ##检测配置文件语法
nginx 重启nginx
netstat -antulp 查看80端口是否开启
- 测试:
当nginx启动后,在浏览器总输入负载均衡器所在虚拟机ip(172.25.254.111是我的负载均衡器) http://172.25.254.111/test.jsp 不断刷新网页,观察现象:111服务器与112服务器轮询负载,ID号在不停的发生变化
需要注意的是:
在浏览器中访问http://172.25.254.111 访问的是nginx本身的默认发布界面(nginx的默认服务端口为80);http://172.25.254.111:8080 访问的是tomcat(tomcat服务端口为8080) ;http://172.25.254.111/test.jsp 访问的才是nginx负载均衡器负载配置的目录