快速安全部署 Tomcat

news2024/9/29 17:38:58

主机环境

IP域名用途
172.25.254.10tomcat1.orgTomcat
172.25.254.20tomcat2.orgTomcat
172.25.254.30nginx-server.orgNginx 负载均衡

Tomcat 安装

172.25.254.10

# 安装JAVA
[root@tomcat1 ~]# yum install java-1.8.0-openjdk.x86_64 -y
# 下载Tomcat,推荐在Windows主机下载后,上传虚拟机
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.93/src/apache-tomcat-9.0.93.tar.gz
tar zxf apache-tomcat-9.0.93.tar.gz -C /usr/local/
# 创建软连接(简化命令)
ln -s /usr/local/apache-tomcat-9.0.93/ /usr/local/tomcat
# 添加用户,修改权限
useradd -s /sbin/nologin -M tomcat
chown -R tomcat.tomcat /usr/local/tomcat/
# 为Tomcat添加JAVA
vim /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/etc/alternatives/jre_openjdk/
# 设置Tomcat命令启停脚本
vim /usr/bin/tomcat
#!/bin/bash
case $1 in
    start)
    /usr/local/tomcat/bin/startup.sh
    ;;
    stop)
    /usr/local/tomcat/bin/shutdown.sh
esac
chmod +x /usr/bin/tomcat
# 设置开机自启脚本
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/bin/tomcat start
ExecStop=/usr/bin/tomcat stop
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
# 重载配置文件,并启动
systemctl daemon-reload
# 启动不成功,可能是/usr/local/apache-tomcat-9.0.93/bin/下的.sh没有x权限
# 官方下载的包内,.sh文件没有x权限
systemctl enable --now tomcat
# 复制文件给172.25.254.20
scp -rp /usr/local/apache-tomcat-9.0.93 root@172.25.254.20:/usr/local/
scp -p /usr/bin/tomcat  root@172.25.254.20:/usr/bin/
scp -p /lib/systemd/system/tomcat.service  root@172.25.254.20:/lib/systemd/system/

172.25.254.20

[root@tomcat2 ~]# yum install java-1.8.0-openjdk.x86_64 -y
ln -s /usr/local/apache-tomcat-9.0.93 /usr/local/tomcat
useradd -s /sbin/nologin -M tomcat
chown -R tomcat.tomcat /usr/local/tomcat/
systemctl daemon-reload
systemctl enable --now tomcat

效果演示

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

Tomcat 反向代理

Tomcat 服务器

cp test.jsp /usr/local/tomcat/webapps/ROOT/

172.25.254.30

# 安装nginx
dnf install nginx -y
vim /etc/hosts		# Windows主机 hosts 文件 也需要添加
172.25.254.10   tomcat1.org
172.25.254.20   tomcat2.org
172.25.254.30   nginx-server.org
# 编辑子配置文件
vim /etc/nginx/conf.d/vhost.conf
server {
    listen *:80;
    server_name nginx-server.org;
    root /data/web/html;
    index index.html;
    
    location ~ \.jsp$ {
        proxy_pass http://172.25.254.10:8080;
    }
}
# 启动nginx
systemctl enable --now nginx

效果演示

在这里插入图片描述

Tomcat 负载均衡

172.25.254.30

vim /etc/nginx/conf.d/vhost.conf
upstream tomcat {
		# ip_bash;
		# hash $cookie_JSESSIONID;
    server 172.25.254.10:8080;
    server 172.25.254.20:8080;
}

server {
    listen *:80;
    server_name nginx-server.org;
    root /data/web/html;
    index index.html;

    location ~ \.jsp$ {
        proxy_pass http://tomcat;
    }
}

# 检测语法是否出错
nginx -t
# 重载nginx配置文件
nginx -s reload

效果演示

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

目前配置中存在的问题

  • 交替访问的IP不一致,会话不一致,导致提交的数据消失
    • nginx配置中使用ip_bash算法进行解决
  • 刷新导致会话断开,提交的数据消失
    • nginx配置中使用hash $cookie_JSESSIONID算法进行上述问题

Memcached

Tomcat 服务器

# 安装 Memcached
yum install memcached -y
# 编辑配置文件
vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 0.0.0.0,::1"

# 启动Memcached
systemctl enable --now memcached
# 查看端口是否打开
netstat -antlupe | grep memcached
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      983        61722      31178/memcached
tcp6       0      0 ::1:11211               :::*                    LISTEN      983        61723      31178/memcached

session 共享服务器

有时候,当客户访问Tomcat时,恰巧Tomcat宕机,导致客户提交的数据丢失,给用户带来不好的体验

需要部署Tomcat会话共享,避免这种情况发生

Tomcat 服务器

# 上传所有.jar文件到Tomcat服务器的/usr/local/tomcat/lib/中
# 编辑会话共享配置文件
vim /usr/local/tomcat/conf/context.xml
# 172.25.254.10
		...
    <Manager pathname="" />
    -->
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
     memcachedNodes="n1:172.25.254.10:11211,n2:172.25.254.20:11211"
     failoverNodes="n1"
     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
     transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />
</Context>
# 172.25.254.20
		...
    <Manager pathname="" />
    -->
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
     memcachedNodes="n1:172.25.254.10:11211,n2:172.25.254.20:11211"
     failoverNodes="n2"
     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
     transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />
</Context>

systemctl restart tomcat

Nginx 服务器

vim /usr/local/nginx/conf.d/vhosts.conf
upstream tomcat {
    hash $cookie_JSESSIONID;
    server 172.25.254.10:8080;
    server 172.25.254.20:8080;
}

server {
    listen *:80;
    server_name nginx-server.org;
    root /data/web/html;
    index index.html;

    location ~ \.jsp$ {
        proxy_pass http://tomcat;
    }
}

nginx -s reload

效果演示

在这里插入图片描述

此时暂停 172.25.254.10 的 Tomcat 服务

systemctl stop tomcat

然后输入ccc 333 点击提交

在这里插入图片描述

可以看见,即使172.25.254.10的Tomcat服务宕掉后,会话依然可以正常进行,并没有导致提交的数据丢失
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2087958.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EE trade:贵金属包括哪些

贵金属&#xff0c; 顾名思义&#xff0c; 是指价值贵重的金属&#xff0c; 它们因其独特的性质和稀缺性&#xff0c; 在人类历史上扮演着重要的角色。 从古代的装饰品到现代的工业材料&#xff0c; 贵金属一直受到人们的追捧。 一、 八大贵金属&#xff1a; 稀有珍贵&#xf…

首批河南省“人工智能+高等教育” 典型应用场景公布

河南省在推进高等教育与人工智能技术融合方面迈出了重要步伐。 近期&#xff0c;河南省教育厅公布了首批“人工智能高等教育”典型应用场景案例认定名单&#xff0c;此举标志着省级教育部门对高校在AI应用方面的积极探索和实践给予了高度认可和支持。 经过严格的申报审核、会…

夜深了,赶紧根据软件系统建模建设一个房屋租赁服务系统,坐上收租大佬宝座,走上人生巅峰

目录 案例 【题目】 【问题 1】(12 分) 【问题 2】(5 分) 【问题 3】(8 分) 【答案】 【问题 1】答案 【问题 2】答案 【问题 3】答案 相关推荐 案例 阅读以下关于软件系统建模的叙述&#xff0c;在答题纸上回答问题 1 至问题 3。 【题目】 某公司欲建设一个房屋租赁服务…

图像去模糊技术分享

图像去模糊是图像处理领域中的一个技术过程&#xff0c;旨在恢复或提高模糊图像的清晰度&#xff0c;减少因各种原因&#xff08;如运动、焦点不准等&#xff09;导致的图像模糊。图像去模糊技术对于提高图像质量&#xff0c;增强视觉效果&#xff0c;以及在诸如医疗成像、卫星…

鸿蒙( Beta5.0版)开发实战:自定义TabBar页签

介绍 本示例主要介绍了TabBar中间页面如何实现有一圈圆弧外轮廓以及TabBar页签被点击之后会改变图标显示&#xff0c;并有一小段动画效果。 效果图预览 使用说明&#xff1a; 依次点击tabBar页面&#xff0c;除了社区图标之外&#xff0c;其它图标往上移动一小段距离。 实现…

内网穿透的应用-如何使用跨平台终端Tabby结合内网穿透工具异地远程ssh访问Ubuntu系统

文章目录 前言1. Tabby下载安装2. Tabby相关配置3. Tabby简单操作4. ssh连接Linux4.1 ubuntu系统安装ssh4.2 Tabby远程ssh连接ubuntu 5. 安装内网穿透工具5.1 创建公网地址5.2 使用公网地址远程ssh连接 6. 配置固定公网地址 前言 今天和大家分享一下如何在Windows系统使用Tabb…

友元成员函数怎么用?

友元破坏了类的封装性&#xff0c;能够让友元的类或函数访问到类的私有数据&#xff0c;既然它有这个特性那就看看怎么使用吧&#xff0c;这里看个友元成员函数的使用。 #include <stdlib.h> #include <stdio.h> #include <malloc.h>class CDate; class CTi…

脑电图(学习自用)(1-4课)

文章目录 第一课&#xff1a;电极的安放位置和测量安放前的准备放置操作导联设置 第二课&#xff1a;脑电图一般判读原则判断正常的脑电图睡眠期的脑电图正常成分慢波的说明 正常脑电图的变异弥漫性慢波 第三课&#xff1a;脑电图波的分析和识别波幅的分布 位相波形-单型波正弦…

C#预处理器指令

预处理器指令(Preprocessor Directives)指导编译器在实际编译开始之前对信息进行预处理. 通过这些指令,可以控制编译器如何编译文件或编译哪些部分.常见的预处理器指令包括条件编译,宏定义等. 所有的预处理器指令都是以#开始,且在一行上,只有空白字符可以出现在预处理器指令之…

领夹麦克风哪种好,领夹麦克风哪种好用又实惠,无线麦克风推荐

​对于追求高品质视频内容的创作者来说&#xff0c;优质的录音设备是不可或缺的。今天&#xff0c;我将分享几款性价比极高的无线领夹麦克风&#xff0c;它们将帮助你在各种拍摄环境中获得清晰、专业的音频&#xff0c;让你的作品声音部分无可挑剔吧&#xff01; 一、无线领夹麦…

网易易盾携手雷斧科技,打造公平竞技环境

这是一个充满复古像素风格的游戏世界&#xff0c;玩家们控制着自己的像素角色&#xff0c;手持着各种像素化武器&#xff0c;时而酣畅对战&#xff0c;时而自由创作地图、武器和皮肤。 《像素射击》是由雷斧科技开发的一款集生存、对战、沙盒创造于一体的像素风格的3D多人在线…

Kafka【四】Controller的选举机制

【1】控制器&#xff1a;Controller Kafka是分布式消息传输系统&#xff0c;所以存在多个Broker服务节点&#xff0c;但是它的软件架构采用的是分布式系统中比较常见的主从&#xff08;Master - Slave&#xff09;架构&#xff0c;也就是说需要从多个Broker中找到一个用于管理…

安卓项目打包与发版说明-笔记

项目打包与发版说明 Android Studio 打包 1.打包debug版 在调试完成后&#xff0c;点击编辑器的上方Build选项&#xff0c;然后依次选择 ->Build Bundle(s) / APK(s) -> Build APK(s) 打包完成后在控制台信息处点击信息框中的locate&#xff0c;在文件管理器中浏览&a…

Linux_kernel简介01

--------------------------------------------------------- 力扣专题 --------------------------------------------------------- 一、嵌入式开发 1、ARM的历史 ARM原本含义(Acom RISC Machine)后来Acron公司独立出了ARM部门&#xff0c;成立了ARM公司&#xff08;Advan…

指挥中心操作台在应急响应中的关键作用

在现代社会&#xff0c;面对突如其来的自然灾害、公共卫生事件或安全事故等紧急状况&#xff0c;高效、迅速的应急响应机制是保障社会稳定与人民安全的重要基石。而在这场与时间赛跑的较量中&#xff0c;指挥中心操作台无疑扮演着至关重要的角色&#xff0c;它是应急管理体系中…

源代码加密软件有哪些?11款超好用的源代码加密软件推荐

在软件开发领域&#xff0c;源代码加密是保护企业知识产权和核心技术的重要手段。随着远程办公和云开发的普及&#xff0c;源代码在传输和存储过程中面临的安全风险日益增加。因此&#xff0c;选择合适的源代码加密软件至关重要。以下是11款超好用的源代码加密软件推荐&#xf…

Python画笔案例-020 绘制米字图

1、绘制米字图 通过 python 的turtle 库绘制一个米字图的图案&#xff0c;如下图&#xff1a; 2、实现代码 绘制一个米字图&#xff0c;以下为实现代码&#xff1a; """米字图.py """ import turtle # 导入海龟模块turtle.pensize(2…

RocketMQ安装实操

官方下载地址 http://rocketmq.apache.org/dowloading/releases/ 使用最新的版本。 1.2、环境要求 Linux64位系统JDK1.8(64位)源码安装需要安装Maven 3.2.x1.3、目录介绍 bin:启动脚本,包括shell脚本和CMD脚本conf:实例配置文件 ,包括broker配置文件、logback配置文件等l…

Python编程实战营:四款实用小项目助你快速入门,从零开始打造你的个人项目集!

踏入编程世界的门槛&#xff0c;总是伴随着既兴奋又忐忑的心情。作为Python的新手&#xff0c;你是否渴望通过实际项目来巩固知识、提升技能&#xff1f;本篇文章将引领你踏上一段从理论到实践的精彩旅程&#xff0c;通过四个精心设计的项目&#xff0c;让你在趣味与挑战中快速…

机器人大会引领产业动向,卓翼飞思绘制无人系统教科研新蓝图

8月21日&#xff0c;万众瞩目的2024世界机器人大会暨博览会在北京亦创国际会展中心盛大开幕。这场为期5天&#xff0c;集“展览”“论坛”“赛事”于一体的机器人盛会&#xff0c;反映了当下机器人领域的繁荣生态。据官方统计数据&#xff0c;今年现场逛展观众高达25万人次&…