linux企业实战 --tomcat

1 Tomcat

Tomcat服务器是一个免费的开发源代码的WEB应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。其主要的应用场景是解析动态程序代码( Java ) JSP程序可以处理Tomcat界面
换句话说:Tomcat 理解为 Java 容器,可以跑 JSP 代码!!!

2 搭建tomcat

  1. 准备三台虚拟机
  • server1—nginx
  • server2—tomcat
  • server3—tomcat

解压到指定目录下,并做软链接,写入环境变量

tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
tar zxf apache-tomcat-7.0.99.tar.gz  -C /usr/local/

cd /usr/local/
ln -s jdk1.7.0_79/ java
ln -s apache-tomcat-7.0.99/ tomcat

vim /etc/profile  # 写入jdk的环境变量
在最后加入

export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile  #编译

在这里插入图片描述在这里插入图片描述

测试
写一个java代码测试

vim ~/test.java  # 写一个java代码测试
public class test
{
	public static void main(String[] args)
	{
		System.out.println("Hello World!");
	}
}

javac test.java 		# 编译
java test				#执行java
Hello World!			#输出结果

在这里插入图片描述
此时java环境已经OK了

启动tomcat

cd /usr/local/tomcat/
bin/startup.sh   # 启动tomat

在这里插入图片描述
以上在server2 和 server3 上同时搭建。

查看tomcat的端口

netstat -antlpe|grep 8080 #查看端口

在这里插入图片描述
搜索 172.25.42.2:8080 和 172.25.42.3:8080
在这里插入图片描述

测试:编写一个tomcat发布页面

cd /usr/local/tomcat/webapps/ROOT
vim test.jsp
cat test.jsp
server2-The time is :<%=new java.util.Date() %>

在这里插入图片描述在这里插入图片描述

3 nginx做tomcat的负载均衡

vim /usr/local/nginx/conf/nginx.conf

http {
    include       mime.types;
    default_type  application/octet-stream;
    upstream tomcat{
                server 172.25.60.2:8080;
                server 172.25.60.3:8080;
        }
 location / {
            root   /usr/local/tomcat/webapps/ROOT;
            index  index.html index.htm;
        }
 location ~ \.jsp$ {
           proxy_pass   http://tomcat;
       }
nginx -t
nginx -s reload

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

测试:负载均衡实现!!!
在这里插入图片描述在这里插入图片描述

4 保持会话连接

4.1 引入session

在server2和server3中 更改之前tomcat的发布页面

cd /usr/local/tomcat/webapps/ROOT
vim test1.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> session " + session.getId()+"<br>");
String dataName= request.getParameter("dataName");
if (dataName != null && dataName.length()>0){
String dataValue=request.getParameter("dataValue");
session.setAttribute(dataName,dataValue);
}
%>

在这里插入图片描述在这里插入图片描述

测试

在这里插入图片描述在这里插入图片描述

4.2 session

  1. 什么是session

应用服务器的高可用架构设计主要基于服务无状态这一特性,但是事实.上,业务总是有状态的,在交易类的电子商务网站,需要有购物车记录用户的购买信息,用户购买请求都是向购物车中增加商品;在社交类的网站中,需要记录用户的当前登陆状态,最新发布的消息及好友状态等,用户每次刷新页面都需要更新这些信息。

  1. cookie

在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据( cookie )给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据

  1. session

session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。

在这里插入图片描述
做轮询时,每次刷新其session值都会改变。

现在需要偏向一台服务器:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

如果一方挂掉,另一方想读取到挂掉的信息

cd /usr/local/tomcat/
bin/shutdown.sh

在这里插入图片描述在这里插入图片描述
但是此时server2的页面仍旧丢失了。

现在要使得一方宕机了,另一方仍旧可以读到宕机方的信息。

在这里插入图片描述
解决方案
server 2 同 server 3

cp /root/lnmp/jar/* /usr/local/tomcat/lib/
cd lib/
rm -fr memcached-session-manager-tc6-1.6.3.jar 

在这里插入图片描述在这里插入图片描述

更改content扩展标记语言

vim /usr/local/tomcat/conf/context.xml

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.42.2:11211,n2:172.25.42.3:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcodeFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTransoderFactory"
/>

在这里插入图片描述
在这里插入图片描述

yum install memcached -y
systemctl start memcached
netstat -antlpe  # 查看11211端口是否开启

bin/shutdown.sh 
bin/startup.sh  #重启tomcat

在这里插入图片描述在这里插入图片描述

测试

发布了136 篇原创文章 · 获赞 1 · 访问量 1639

猜你喜欢

转载自blog.csdn.net/qq_45652989/article/details/104681118
今日推荐