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

2023-11-02

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端口是两个不同的程序,设置成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 解决 Java Checkstyle 错误:名称 'logger' 必须匹配模式 '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'

    使用 Eclipse Checkstyle 插件我看到以下错误 名称 logger 必须匹配模式 A Z A Z0 9 A Z0 9 我通过更改解决了此错误 private static final Logger logger Logger
  • 如何开始使用 Chainsaw for Log4j?

    我想开始使用 Chainsaw v2 几乎没有关于它的信息 我只找到了this http www velocityreviews com forums t140105 help using chainsaw for log4j html 但
  • 使用 sed 更新 xml 属性(Windows + cygwin 和 Linux)?

    我需要使用 sed 命令对 xml 文件进行更新 但我在这方面遇到了麻烦 它需要在 Windows 使用 cygwin 和 Linux 上运行 XML 具有以下元素
  • 如何比较 Struts 2 中 url 请求参数中的单个字符

    我正在读取具有单个字符的 url 参数 它将是Y or N 我必须写一个条件来检查它是否Y or N并做相应的事情 这是我写的 但似乎不起作用 总是转到其他地方 网址是
  • 哪个 Swing 布局管理器可以获得我想要的布局?

    我正在尝试按照这个模型制作一个基本的登录菜单 我决定将整个菜单放入 JPanel 中 以便在连接成功后我可以切换到另一个面板 所以我决定使用 Borderlayout 将标题放在北区 将连接按钮放在南区 我将边框布局的中心本身设置为面板 我
  • RMI 中的引用传递问题? [复制]

    这个问题在这里已经有答案了 有人可以告诉我我错在哪里 为什么这个 RMI 聊天应用程序不起作用 目标是通过远程对象或序列化对象实现客户端 服务器和逻辑之间的解耦 import javax swing import java awt even
  • 尝试使用 JRI 将 R 与我的 Java 应用程序集成,但出现错误。谁能解释一下原因和解决办法吗?

    我需要将 Java 与 R 集成来运行一些数学命令并使用 R 的功能进行绘图 以下部分代码给出了错误 public static void main String args HelloRWorld r new HelloRWorld r h
  • java.lang.LinkageError:尝试重复的类定义

    为什么会发生错误以及如何修复它 02 13 02 pool 4 thread 2 WARN Exception in thread pool 4 thread 2 02 13 02 pool 4 thread 2 WARN java lan
  • 加载数据infile,Windows和Linux的区别

    我有一个需要导入到 MySQL 表的文件 这是我的命令 LOAD DATA LOCAL INFILE C test csv INTO TABLE logs fields terminated by LINES terminated BY n
  • Java Microsoft Excel API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 当您在数组列表上调用remove(object o)时,它如何比较对象?

    当您在 java 中的数组列表上调用remove object o 时 它如何比较对象以找到要删除的正确对象 它使用指针吗 或者它使用 Comparable 接口来比较对象吗 ArrayList remove 依赖于对象的实现Equal方法
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 在 Java 中将弯音发送到 MIDI 音序器

    我了解启动和运行 MIDI 音序器的基础知识 并且希望能够在播放过程中增加 减小序列的音高 但弯音是发送到合成器而不是音序器的消息 我尝试将音序器的接收器设置为合成器的发射器 当我发送弯音短消息时 音序器保持相同的音调 但随后合成器以新的弯
  • 创建正则表达式匹配数组

    在Java中 我试图将所有正则表达式匹配返回到一个数组 但似乎您只能检查模式是否匹配某些内容 布尔值 如何使用正则表达式匹配来形成与给定字符串中的正则表达式匹配的所有字符串的数组 4城堡的回答 https stackoverflow com
  • 改变for循环的顺序?

    我遇到一种情况 我需要根据用户输入以不同的顺序循环遍历 xyz 坐标 所以我是 3D 空间中的一个区域 然后是一组像这样的 for 循环 for int x 0 x lt build getWidth x for int y 0 y lt
  • 了解 Spark 中的 DAG

    问题是我有以下 DAG 我认为当需要洗牌时 火花将工作划分为不同的阶段 考虑阶段 0 和阶段 1 有些操作不需要洗牌 那么为什么 Spark 将它们分成不同的阶段呢 我认为跨分区的实际数据移动应该发生在第 2 阶段 因为这里我们需要cogr
  • 使用 JAD 反编译 java - 限制

    我正在尝试使用 Java 中的 JAD 反编译几个 jar 文件 我也尝试过 JD GUI 但运气更差 但出现了很多错误 一种类型 易于修复 似乎是内部类 但我也发现了这段代码 static int SWITCH TABLE atp com
  • 公共方法与公共 API

    在干净的代码书中 有一个观点是 公共 API 中的 Javadocs 同样 Effective java 一书也有这样的内容 项目 56 为所有公开的 API 元素编写文档注释 所以这就是我的问题 所有公共方法都被视为公共 API 吗 它们
  • Java:使用 Graph API 在线更新 Sharepoint 上的 docx 文件

    我在使用 Java 在线更新 Sharepoint 上的 docx 文件时遇到问题 首先 我检查了构建 PUT 请求的 URL 此处 并使用此请求 PUT drives drive id items item id content 我首先使
  • 为什么应该首选 Java 类的接口?

    PMD https pmd github io 将举报以下违规行为 ArrayList list new ArrayList 违规行为是 避免使用 ArrayList 等实现类型 而是使用接口 以下行将纠正违规行为 List list ne

随机推荐

  • 如何用springboot实现发送通知给用户的功能

    可以使用 Spring Boot 中的 Spring Boot Starter Mail 来实现发送通知给用户的功能 首先需要在项目的 pom xml 文件中添加对 spring boot starter mail 的依赖 然后在 appl
  • 【程序人生】5个月从职场打杂到月薪14000的女测试工程师逆袭之路

    大家好 我是来自湖南的一位辣妹子 毕业于一所工业大学 大学的专业是软件与工程 其实也算是本专业 大学期间掌握的知识也算比较广 各个方面都会一丢丢 就是不是特别深入 之所以这么说 是因为一直以来我觉得自己还不错 但毕业设计的时候 怎么也做不出
  • Audition报错:“无法应用设备设置,因为发生了以下错误:MME设备内部错误“

    今天打开AU提示有一个错误如下 打开设置以后就这样显示三条都不可用 查找了相关资料发现都不能解决 后来自己尝试几个地方设置才得以解决 问题出在如下 没有选对相应输入输出设备
  • AF_PACKET套接字解密 --- 02

    AF PACKET套接字解密 02 2012 05 23 22 36 57 分类 LINUX 当AF PACKET套接字注册了prot hook后 怎样进行监听呢 先来看发送 当协议栈准备将数据交给net device发送时 它将调用dev
  • (一维数组)输入N个数,然后逆序输出

    一维数组 1 输入N个数 例题6个数 然后逆序输出 define N 6 include stdio h void main int i a N t for i 0 i
  • 网络安全-js安全知识点与XSS常用payloads

    目录 简介 用法 JS必备知识 输出与注释 输出 注释 语法 函数 字符串方法 事件 表单 Cookie 代码执行 伪协议 XSS常用payload 普通 双写绕过 编码绕过 html标签绕过正则 参考 写给和我一样学习安全的小白 简介 J
  • eMMC分区管理

    目录 0 概述 FLASH分区类型 分区大小 分区编址 1 Boot Area Partitions 1 1 容量大小 1 2 从 Boot Area 启动 1 2 1 Original Boot Operation 1 2 2 Alter
  • 递归与回溯的理解

    递归 程序调用自身的编程技巧称为递归 recursion 递归做为一种算法在程序设计语言中广泛应用 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法 它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模 较小的问题来求解
  • 忘了高高在上的Chatgpt吧,更香的Claude和Bard来了

    最近LLM这一领域近年来进步神速 新的产品层出不穷 给我们的生活和工作带来了巨大便利 也引发了广泛关注 首当其冲的 就数OpenAI研发的ChatGPT ChatGPT是一款基于GPT模型打造的对话AI系统 被业内公认为目前进展最快 实力最
  • 大多数女生为什么不适合当程序员?

    最重要的一点 逻辑思维能力 女程序员最大的问题不是压力大而是思维方式切换的挑战 从抽象到具象 平常需要将问题抽象出来 运用抽象思维解决工作上的困难 生活中间又要很具象 很感性地和人交往 这是非常难以达到的一件事 加上工作压力一大 就容易崩溃
  • skywalking 实现收集基于python的Django项目链路追踪案例

    一 python3环境设置 1 1 安装python3 apt get update apt install python3 pip y pip install apache skywalking root skywalking agent
  • 人脸相关公开数据集

    1 皮肤分割和面部检测数据集 FSD 1 数据集名称 Face and Skin Detection FSD Database 2D图像 2 数据集简介 The Face and Skin Detection FSD Database is
  • nodejs使用kafka

    什么是卡夫卡 kafka 是一种分布式的 基于发布 订阅的消息系统 消息以消息队列的形式进行发送 如何使用kafka 安装kafka npm i kafka node 配置config 配置kafka的地址和topic 放在config文件
  • 【VQ-VAE论文精读+代码实战】Neural Discrete Representation Learning

    VQ VAE论文精读 代码实战 Neural Discrete Representation Learning 0 前言 Abstract 1 Introduction 提出现有方法的问题并说明有哪些贡献 2 Related Work 提出
  • vue中click无效问题

    当父元素为relative 子元素为absolute时可能会出现click点击无效 无法触发onClick事件的情况 目前已知两种解决方法 1 最外层div的z index层级设置比里面绝对定位的大 2 用 click prevent也是可
  • 【机器学习】特征工程:时间特征构造以及时间序列特征构造(含源代码理解)

    目录 特征工程 时间特征构造以及时间序列特征构造 一 前言 二 特征构造介绍 三 时间特征构造 3 1 连续值时间特征 3 2 离散值时间特征 3 2 1 时间特征拆解 3 2 2 时间特征判断 3 2 3 结合时间维度的聚合特征 四 时间
  • shell浅谈之三for、while、until循环

    一 简介 Shell编程中循环命令用于特定条件下决定某些语句重复执行的控制方式 有三种常用的循环语句 for while和until while循环和for循环属于 当型循环 而until属于 直到型循环 循环控制符 break和conti
  • 【Redis速通】基础知识2 - 常用数据结构

    Redis 通用指令 下面是一些 Redis 的通用命令 你可以根据下表进行简单的复习 键操作命令 SET 设置指定键的值 GET 获取指定键的值 DEL 删除指定键 EXISTS 检查指定键是否存在 KEYS 获取匹配指定模式的键列表 字
  • MyBatis代码生成器-Example讲解

    什么是example类 mybatis generator会为每个字段产生Criterion 为底层的mapper xml创建动态sql 如果表的字段比较多 产生的example类会十分庞大 理论上通过example类可以构造你想到的任何筛
  • Linux JAVA环境的搭建tomcat的部署(含多实例)

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