Linux JAVA环境的搭建tomcat的部署(含多实例)

news2025/1/18 6:06:12

tomcat

tomcat是Apache软件基金会项目中的一个核心项目由 Apache、Sun 和其他一些公司及个人共同开发而成。tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器.

tomcat的组成

tomcat用于支持Java Servlet和JSP。它是一个重要的Web应用程序服务器,具有模块化的架构,以下是Tomcat的主要组成部分:

  1. Catalina Servlet容器: Tomcat的核心组件之一是Catalina,它是一个Servlet容器,负责处理HTTP请求和响应。Catalina实现了Servlet规范,并提供了一个运行环境,让开发者能够部署和运行Java Web应用程序。

  2. Coyote Connector: Tomcat使用Coyote Connector来处理网络通信。它支持HTTP、HTTPS和AJP(Apache JServ Protocol)等协议,允许Tomcat与客户端(通常是浏览器)和其他Web服务器进行通信。这个组件是Tomcat的入口点,它接受来自客户端的请求,并将它们传递给Catalina进行处理。

  3. Jasper JSP引擎: Jasper是Tomcat的JSP引擎,用于编译和执行JSP页面。当浏览器请求JSP页面时,Tomcat会使用Jasper将JSP代码转换为Servlet,并最终返回HTML给客户端。这使得动态Web页面的开发变得更加简单和高效。

  4. Web应用程序目录结构: Tomcat的Web应用程序是以目录结构的形式组织的,通常位于Tomcat安装目录下的webapps文件夹中。每个Web应用程序都有自己的目录,包括WEB-INF文件夹,其中包含了web.xml配置文件、类文件和其他资源。这种结构使得Web应用程序的部署和管理变得非常方便。

  5. Valve和Realm: Tomcat允许开发者通过Valve和Realm来扩展其功能。Valve是一个拦截器,用于在请求和响应之间执行自定义处理,例如身份验证、日志记录等。Realm用于定义用户和角色的验证和授权策略,可以与不同的身份验证机制集成。

  6. Manager应用程序: Tomcat提供了一个名为Manager的Web应用程序,用于管理和监控正在运行的Web应用程序。通过Manager应用程序,管理员可以部署、停止、重新启动和查看Web应用程序的状态。

  7. 日志记录: Tomcat还具备强大的日志记录功能,可以记录请求、错误、访问日志等信息,有助于开发者和管理员追踪和调试问题。

综上,Apache Tomcat是一个由多个组件组成的Web应用程序服务器,其中最重要的构成部分是Web 容器Servlet 容器JSP 引擎

TOMCAT的安装

1、配置JAVA环境
查看JAVA版本

java -version

下图可知我JAVA版本是1.8.0_131
更换JAVA版本在这里插入图片描述
下载JAVA你想安装的rpm安装包如jdk-8u201-linux-x64.rpm

rpm -i  jdk-8u201-linux-x64.rpm

在这里插入图片描述
查看JAVA路径

rpm -qpc jdk-8u201-linux-x64.rpm

在这里插入图片描述
路径是/usr/java/jdk1.8.0_201-amd64/

vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

刷新配置

source /etc/profile.d/java.sh

查看版本

java -version

在这里插入图片描述
升级版本成功

部署TomCat

下载TomCat安装包可以去官网下载,
我在这里下载了
apache-tomcat-9.0.16.tar.gz
解归档
在这里插入图片描述

tar xvf apache-tomcat-9.0.16.tar.gz

启动TOMCAT

进入 /apache-tomcat-9.0.16/bin
文件夹

在这里插入图片描述
运行启动脚本

./startup.sh

在这里插入图片描述
查看是否启动成功

 ss -natp |grep 8080

在这里插入图片描述

可以看见8080端口以开启,tomcat在运行
访问TOMCAT网站
在这里插入图片描述
tomcat已经启动

配置TOMCAT管理文件

vim /usr/lib/systemd/system/tomcat.service

以我的安装路径为例子,配置

[Unit]
Description=Tomcat Server
Wants=network-online.target
After=network.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0_201-amd64"
Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
Environment="CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
ExecStart=/root/apache-tomcat-9.0.16/bin/startup.sh
ExecStop=/root/apache-tomcat-9.0.16/bin/shutdown.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

刷新配置文件

systemctl daemon-reload

这样就可以使用systemctl命令来管理tomcat程序了

tomcat的多实例部署

1、使用

cp  -a  /root/apache-tomcat-9.0.16  /root/tomcat1
cp  -a  /root/apache-tomcat-9.0.16  /root/tomcat2

复制N个tomcat N=你需要部署的实例数量

2、配置 tomcat 环境变量

vim /etc/profile.d/tomcat.sh

以我的为例
#tomcat1

#tomcat1
export CATALINA_HOME1=/root/tomcat1
export CATALINA_BASE1=/root/tomcat1
export TOMCAT_HOME1=/root/tomcat1
#tomcat2
export CATALINA_HOME2=/root/tomcat2
export CATALINA_BASE2=/root/tomcat2
export TOMCAT_HOME2=/root/tomcat2
~
source /etc/profile.d/tomcat.sh

修改 tomcat1 和tomcat2的端口号
例如tomcat1
修改/root/tomcat1/conf/server.xml文件

 vim /root/tomcat1/conf/server.xml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量
修改startup.sh
修改shutdown.sh

# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
##添加以下内容
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1

在这里插入图片描述
使用启动脚本启动tomcat
在这里插入图片描述
启动成功
在这里插入图片描述
在这里插入图片描述
tomcat 8080端口和8081端口是两个不同的程序,设置成功。

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

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

相关文章

手动开发-简单的Spring基于注解配置的程序--源码解析

文章目录 设计注解$设计容器 $#完整代码# 在前文中 《手动开发-简单的Spring基于XML配置的程序–源码解析》,我们是从XML配置文件中去读取bean对象信息,再在自己设计的容器中进行初始化,属性注入,最后通过getBean()方法进行返回。…

Service Mesh目的:是解决系统架构微服务化后的服务间通信和治理问题。

参考链接:https://www.zhihu.com/tardis/bd/art/397945267?source_id1001 1、Service Mesh 是什么 Service Mesh的定义: 服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,服务网格保证请求在这些…

Docker:01 OverView

Docker:01 OverView 基本介绍 Docker是一个用于开发、交付、运行应用程序的开放平台,可以使应用程序与基础架构分开,以便快速交付软件。 Docker在一个被叫做容器的隔离环境下,提供了打包和运行的能力。 容器非常轻量化&#x…

[SICTF 2023] webmisc

文章目录 webBaby_PHP涉及知识点 我全都要RCE你能跟得上我的speed吗 miscPixel_art攻破这个压缩包&#xff01; web Baby_PHP 涉及知识点 php解析特性apache换行解析漏洞无参RCE 源代码 <?php highlight_file(__FILE__); error_reporting(0);$query $_SERVER[QUERY_ST…

【新版】软考 - 系统架构设计师(总结笔记)

个人总结学习笔记&#xff0c;仅供参考&#xff01;&#xff01;&#xff01; →点击 笔者主页&#xff0c;欢迎关注哦&#xff08;互相学习&#xff0c;共同成长&#xff09; 笔记目录 &#x1f4e2;【系统架构设计系列】系统架构设计专业技能 计算机组成与结构操作系统信…

AI系统论文阅读:SmartMoE

提出稀疏架构是为了打破具有密集架构的DNN模型中模型大小和计算成本之间的连贯关系的——最著名的MoE。 MoE模型将传统训练模型中的layer换成了多个expert sub-networks&#xff0c;对每个输入&#xff0c;都有一层special gating network 来将其分配到最适合它的expert中&…

UMA 2 - Unity Multipurpose Avatar☀️九.Expressions表情管理与表情插件推荐 (口型同步 / 表情管理)

文章目录 🟥 Expressions文件位置🟧 功能 : 解决嘴巴张开问题🟨 Expressions : 表情面板API讲解🟩 表情插件推荐 : 口型同步 / 表情管理🟥 Expressions文件位置 Expressions也是UMA内置5种实用Recipes之一,位置如下. 使用方法: 如下图所示,将Recipes拖到Additional…

【ESP-S3-BOX-Lite花屏问题】:Github下载源码(出厂源码factory_demo)编译调试到ESP-S3-BOX-Lite中出现花屏现象

项目场景&#xff1a; 最近拿到了一块乐鑫的 ESP-S3-BOX-Lite &#xff08;esp-box: ESP-BOX 是乐鑫信息科技&#xff09; 详细资料&#xff08;esp32_s3_box_lite&#xff09; 版本信息 ESP-BOX依赖的 ESP-IDF分支信息支持状态master> release/v5.1 commit id: 22cfbf3…

基于javaweb的家庭理财管理系统(servlet+jsp)

一、系统简介 本项目采用工具开发&#xff0c;jspservletjquery技术编写&#xff0c;数据库采用的是mysql&#xff0c;navicat开发工具。 系统一共分为2个角色分别是&#xff1a;管理员&#xff0c;用户 获取方式 xystgl master 码盗_java_bishe / java系统 GitCodeGitC…

Edge浏览器没有让我失望! 今天终于可以在win10中模拟IE内核进行前端测试了!

前言 &#x1f61d; ietest现在是不是不好用了? Edge浏览器仿真是不是不见了&#xff1f; 如图 如果我们在前端开发javascript遇见一些老旧的语法标准&#xff0c;想要测试一下都难&#xff0c;想想都抓狂!&#x1f624;&#x1f624; 不过不用担心&#xff0c;经过这几天的…

娱乐时间 —— 用python将图片转为excel十字绘

最近看蛮多朋友在玩&#xff0c;要么只能画比较简单的&#xff0c;要么非常花时间。想了下本质上就是把excel对应的单元格涂色&#xff0c;如果能知道哪些格子要上什么颜色&#xff0c;用编程来实现图片转为excel十字绘应该是很方便的。 图片的每一个像素点都可以数值化&#x…

人工智能TensorFlow PyTorch物体分类和目标检测合集【持续更新】

1. 基于TensorFlow2.3.0的花卉识别 基于TensorFlow2.3.0的花卉识别Android APP设计_基于安卓的花卉识别_lilihewo的博客-CSDN博客 2. 基于TensorFlow2.3.0的垃圾分类 基于TensorFlow2.3.0的垃圾分类Android APP设计_def model_load(img_shape(224, 224, 3)_lilihewo的博客-CS…

C语言指针详解(1)------指针类型(简单例子+详细讲解)

C语言指针类型详解及举例 此文介绍了C语言中常见的6种指针,对每种指针进行了介绍,并举出相应的例子供大家理解学习. 文章目录 C语言指针类型详解及举例1.字符指针2.数组指针3.指针数组4.函数指针5函数指针数组6指向函数指针数组的指针 1.字符指针 字符指针是指向字符数组或字符…

vue学习之事件绑定

事件绑定 创建 demo5.html,内容如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</…

手写Mybatis框架

Mybatis核心配置文件就是为了配置Configration 因此要首先会解析Mybatis核心配置文件 首先使用dom4J解析Mybatis核心配置文件 新建模块演示dom4j解析.xml 目录放错了 无所谓 引入依赖 从原来项目可以拷贝过来 就些简单配置就好 解析核心配置文件和解析xxxMapper.xml映射文件…

《React vs. Vue vs. Angular:2023年的全面比较》

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

如何快速下载UE源码

前置技能要求掌握Git和Github的基础操作和知识 1.获取源码仓库授权并下载源代码 (1).获取授权 UE是开源的&#xff0c;但是它的代码仓库在Github不开源&#xff0c;我们没法直接搜索到&#xff0c; 登录->个人信息->应用与账户->连接Github 请按照官网指引成功进…

想要精通算法和SQL的成长之路 - 课程表III

想要精通算法和SQL的成长之路 - 课程表III 前言一. 课程表III&#xff08;贪心优先队列&#xff09;1.1 优先选择截止时间更小的课程1.2 如果当前课程无法学习怎么办&#xff1f;1.3 优化 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 课程表III&#xff08;贪心优先队列&…

【ArcGIS pro】-使用arcpy一次保存多个布局

在arcgis Pro中常常会创建多个地图和多个布局&#xff0c;本文介绍如何使用代码&#xff0c;一次保存多个布局文件 在arcgis pro中打开python视图 找到工程位置 在python视图中输入如下代码 保存为pdf import arcpy# 设置当前项目&#xff0c;这通常是一个.aprx文件 projec…

11.Xaml DatePicker控件 时间控件

1.运行效果 2.运行源码 a.Xaml源码 <Grid Name="Grid1"><!--DisplayDate="2020-5-1" 显示的日期--><!--DisplayDateStart="2020