云计算百科
云计算领域专业知识百科平台

RHEL——web应用服务器TOMCAT

# java 全栈(前端+后端),用户想要访问java程序需要通过nginx,但nginx处理不了java,需要TOMCAT来处理java程序后将数据返回给nginx

#nginx(构建响应报文)——中间件——java(程序)

#中间件

  • 企业版:Oracle WebLogic、Red Hat JBoss EAP等

  • 社区版:Apache Tomcat等


一、WEB技术

1. 架构

# C/S架构

客户端(应用)——服务

# B/S架构

浏览器(网页)——服务


2. 前端三大核心技术

(1) HTML

# HTML(HyperText Markup Language)是网页的骨架,用标签来定义网页有哪些内容

  • 不是编程语言(没有逻辑判断、循环)

  • 是标记语言(用一对对标签包裹内容)

  • 浏览器能直接识别和渲染


(2)css

# CSS(Cascading Style Sheets)是网页的皮肤,控制 HTML 元素的外观(颜色、大小、位置、动画等)

  • 也是标记语言(不是编程语言)

  • 通过选择器找到 HTML 元素,然后设置样式

  • 支持层叠和继承


(3)JavaScript

# JavaScript 是网页的灵魂(能做什么动作),让页面从“静态展示”变成“动态交互”

  • 是编程语言(有变量、循环、判断、函数),不是标记语言

  • 运行在浏览器端(也可以运行在服务器端,如 Node.js)

  • 可以动态操作 HTML 和 CSS(增删改查页面元素和样式)

  • 事件驱动(响应用户的点击、输入、滚动等操作)

  • 支持异步通信(AJAX/Fetch,不刷新页面获取数据)

# 用户和服务器进行交互时有同步和异步两种模式

# 同步:用户发来请求时,在网页中按顺序编写内容,如果上一行内容有错或者整个网页有一行错误,想要修改则会直接刷新整个网页,用户又要重新编写内容

# 异步:用户发来请求编写内容时,是不需要按顺序编写的,也不会因回到上一行修改而导致整个网页重新刷新


(4)JSP后端技术

# HTML、CSS、JavaScript —— 都是静态的,它们是浏览器直接运行的,内容写死在文件里,不会变化

# JSP —— 是动态的

  • JSP(JavaServer Pages)是 Java Web 技术

  • 运行在 服务器端(如 Tomcat)

  • 可以连接数据库、处理业务逻辑,动态生成 HTML 返回给浏览器


二、web框架

1. web资源和访问

# 用户通过电脑或手机来访问服务器


2. 后台应用架构

(1)单体架构

# 传统架构(单机系统),一个项目就是一个工程

# all in one的架构方式,所有功能都放在一个应用里

# Java实现:jsp、Servlet,打成一个包jar、war部署

# 易于开发和测试

# 如果某个功能模块出问题。需要修改就得重新打包


(2)微服务

# SOA

  • 将功能分配到多个模块
  • 某个模块出问题就修复某个模块就行,不用重新修复整个应用

# Microservice

  • 在SOA的基础是更加细化更多模块
  • 多人开发低,维护成本高

# 优点

  • 每个服务足够小,代码容易理解
  • 开发简单、效率高,可以由小团队(2-5)单独开发
  • 可以使用不同语言开发

# 缺点

  • 一个项目被拆分成多个工程,增加开发、测试、运维和监控等复查度
  • 要保证不同服务之间的数据一致,引入了分布式事务和异步补偿机制

# 微服务架构:Dubbo、Spring cloud


三、TOMCAT

1. TOMCAT实验环境

# 安装中间件TOMCAT要看企业用的最多的是哪个版本,不一定要下最新的版本

# 实验环境至少需要三台虚拟主机,一台用来做高新能web服务器(Nginx),两台用来做web应用服务器(rs1和rs2,用来部署TOMCAT)

# 安装Nginx:https://blog.csdn.net/Forget_8/article/details/157556220?spm=1001.2014.3001.5502#t26

# 下载TOMCAT9版本(目前企业用最多):Apache Tomcat® – Apache Tomcat 9 软件下载


2. 下载tomcat并部署

# 在rs1主机上下载tomcat和安装Java环境

[root@rs1 ~]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.115/bin/apache-tomcat-9.0.115.tar.gz
[root@rs1 ~]# yum install java-1.8.0-openjdk.x86_64 -y

# 部署tomcat

[root@rs1 ~]# ls
[root@rs1 ~]# tar zxf apache-tomcat-9.0.115.tar.gz -C /usr/local/
[root@rs1 ~]# cd /usr/local/
[root@rs1 local]# ls
[root@rs1 local]# mv apache-tomcat-9.0.115/ tomcat
[root@rs1 local]# cd tomcat/
[root@rs1 tomcat]# ls
[root@rs1 tomcat]# cd bin/
[root@rs1 bin]# ./startup.sh
[root@rs1 bin]# netstat -antlupe | grep 8080


3. 制作tomcat启动脚本

# 编写启动脚本

[root@rs1 bin]# vim /lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target

[Service]
Type=forking
EnvironmentFile=/usr/local/tomcat/conf/tomcat.conf
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat

[Install]
wantedBy=multi-user.target

# 设置tomcat环境,创建tomcat用户并进行测试

[root@rs1 bin]# vim /usr/local/tomcat/conf/tomcat.conf
  1 JAVA_HOME=/etc/alternatives/jre

[root@rs1 bin]# useradd -s /sbin/nologin -M tomcat
[root@rs1 bin]# chown tomcat.tomcat /usr/local/tomcat/ -R
[root@rs1 bin]# systemctl daemon-reload
[root@rs1 bin]# systemctl enable –now tomcat.service
[root@rs1 bin]# systemctl restart tomcat.service
[root@rs1 bin]# netstat -antlupe | grep java


4. 在rs2上部署tomcat

###注意:在rs1上部署完tomcat后,在rs2上执行rs1一样的操作部署tomcat

# 将rs1上的tomcat程序和tomcat启动脚本拷贝到rs2上

[root@rs1 local]# scp -r  tomcat/ root@192.168.153.20:/usr/local/
[root@rs1 local]# scp /lib/systemd/system/tomcat.service root@192.168.153.20:/lib/systemd/system/tomcat.service

# 在rs2上安装Java环境,并创建tomcat用户,启动tomcat服务

[root@rs2 ~]# yum install java-1.8.0-openjdk.x86_64 -y
[root@rs2 ~]# useradd -s /sbin/nologin -M tomcat
[root@rs2 ~]# chown tomcat.tomcat /usr/local/tomcat/ -R
[root@rs2 ~]# systemctl daemon-reload
[root@rs2 ~]# systemctl enable –now tomcat
[root@rs2 ~]# systemctl restart tomcat.service
[root@rs2 ~]# netstat -antlupe | grep 8080
[root@rs2 ~]# netstat -antlupe | grep java


四、nginx与tomcat整合

1. 单体架构

# 在nginx主机上配置,反向代理,单机运行

[root@Nginx ~]# vim /usr/local/nginx/conf/conf.d/vhosts.conf
[root@Nginx ~]# nginx -s reload


# 在rs1的tomcat默认发布目录/usr/local/tomcat/webapps/ROOT/上编写测试文件test.jsp

[root@rs1 ~]# vim /usr/local/tomcat/webapps/ROOT/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>


# 将测试文件test.jsp也拷贝到rs2的默认发布目录上

[root@rs1 ~]# scp /usr/local/tomcat/webapps/ROOT/test.jsp root@192.168.153.20:/usr/local/tomcat/webapps/ROOT/test.jsp

# 在Windows主机(测试主机)中添加app.timinglee.org的域名解析

  2026-02-14   19:44.59   /home/mobaxterm  vim /etc/hosts
127.0.0.1       localhost
::1             localhost
192.168.153.100 www.timinglee.org lee.timinglee.org bbs.timinglee.org login.timinglee.org www.lee.org www.lee.com php.timinglee.org app.timinglee.org

# 在浏览器上访问app.timinglee.org/test.jsp


2. tomcat负载均衡

[root@Nginx ~]# vim /usr/local/nginx/conf/conf.d/vhosts.conf
[root@Nginx ~]# nginx -s reload


# 再次访问app.timinglee.org/test.jsp,填写表格是不会乱跳到另一个服务器上,真正实现负载均衡


五、session共享服务器

1. msm介绍

# msm(memcached session manager)提供将Tomcat的session保持到memcached可以实现高可用

# 通过tomcat+memcache实现session会话领丢失


2. 下载模块

# 下载模块,将模块放到/usr/local/tomcat/lib目录下

下载链接:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration#add-memcached-session-manager-jars-to-tomcat

# 打不开github可以下载瓦特工具箱(Steam++官网) – Watt Toolkit加速github


# 将模块拷贝到rs1和rs2的tomcat的/lib目录下

# 到rs2查看/usr/local/tomcat/lib/目录下是否有下好的模块

[root@rs1 ~]# ls
[root@rs1 ~]# unzip jar.zip
[root@rs1 ~]# cp jar/* /usr/local/tomcat/lib/
[root@rs1 ~]# ls /usr/local/tomcat/lib/
[root@rs1 ~]# scp jar/* root@192.168.153.20:/usr/local/tomcat/lib/

[root@rs2 ~]# ls /usr/local/tomcat/lib/


3. 安装memcache

# 在rs1和rs2上安装memcache,并开启memcache服务

[root@rs1 ~]# dnf install memcached -y
[root@rs1 ~]# vim /etc/sysconfig/memcached
[root@rs1 ~]# systemctl restart memcached.service
[root@rs1 ~]# netstat -antluple | grep memcached


4. 配置tomcat

# 在rs1和rs2的/usr/local/tomcat/conf/context.xml

参考模板:​​​​​​​https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration#example-for-sticky-sessions–kryo

[root@rs1 ~]# vim /usr/local/tomcat/conf/context.xml
 29     <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
 30     memcachedNodes="n1:192.168.153.10:11211,n2:192.168.153.20:11211"
 31     failoverNodes="n1"
 32     requestUriIgnorePattern=".*\\.(ico|png|gif|jpg|css|js)$"
 33     transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
 34     />
[root@rs1 ~]# systemctl restart tomcat.service

[root@rs2 ~]# vim /usr/local/tomcat/conf/context.xml
 29     <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
 30     memcachedNodes="n1:192.168.153.10:11211,n2:192.168.153.20:11211"
 31     failoverNodes="n2"
 32     requestUriIgnorePattern=".*\\.(ico|png|gif|jpg|css|js)$"
 33     transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
 34     />
[root@rs2 ~]# systemctl restart tomcat.service


5. 测试共享服务器

# rs1和rs2都在线的情况下访问app.timinglee.org/test.jsp


# 当rs2挂掉后,再次访问app.timinglee.org/test.jsp到rs1上是否有之前rs2的会话数据

[root@rs2 ~]# systemctl stop tomcat.service


# 激活rs2的tomcat服务,关闭rs1的tomcat服务,在rs2上查看是否有rs1的会话数据

[root@rs2 ~]# systemctl restart tomcat.service
[root@rs1 ~]# systemctl stop tomcat.service


赞(0)
未经允许不得转载:网硕互联帮助中心 » RHEL——web应用服务器TOMCAT
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!