简单看看就会的tomcat全家桶(部署-多实例-监控-远程上传-日志-优化等)

news2025/1/14 20:31:54

tomcat学习

一,部署Tomcat

1.配置JDK环境

yum -y install java-1.8.0-openjdk-src.x86_64	#yum源安装JDK1.8 (无须配置环境变量)

2.部署tomcat

下载地址:https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.87/bin/apache-tomcat-8.5.87.tar.gz

压缩二进制包

tar xf /mnt/apache-tomcat-8.5.64.tar.gz -C /usr/local/
cd /usr/local/
mv /usr/local/apache-tomcat-8.5.64/ /usr/local/tomcat

3.tomcat的常用命令

catalina.sh start		#开启tomcat
catalina.sh stop		#关闭tomcat
startup.sh				#开启tomcat
shutdown.sh     		#关闭tomcat

二,自定义目录

1.修改配置文件

[root@localhost ~]# vi /usr/local/tomcat/conf/server.xml
 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Context path="/shop" docBase="/data/project" debug="0" reloadable="false" crossContext="true">
        </Context>
</Host>
#保存退出

2.开启目录浏览功能

[root@localhost ~]# vi /usr/local/tomcat/conf/web.xml
#将false改为true
 <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
  </init-param>
#保存退出

3.创建目录

[root@localhost ~]# mkdir -p /data/project
[root@localhost ~]# touch  /data/project/test.txt

4.重启tomcat服务

[root@localhost ~]# /usr/local/tomcat/bin/catalina.sh stop
[root@localhost ~]# /usr/local/tomcat/bin/catalina.sh start

5.查看效果

请添加图片描述

三,多实例tomcat

1.创建多实例

cp -a /usr/local/tomcat/ /usr/local/tomcat_01	#-a保留文件所有数据 递归复制目录下的所有文件

2.更改端口(避免端口冲突)

sed -i 's#8005#8006#g' /usr/local/tomcat_01/conf/server.xml
sed -i 's#8009#8010#g' /usr/local/tomcat_01/conf/server.xml
sed -i 's#8080#8081#g' /usr/local/tomcat_01/conf/server.xml

3.启动多实例

/usr/local/tomcat/bin/catalina.sh start
/usr/local/tomcat_01/bin/catalina.sh start

4.测试

打开浏览器切换端口测试

请添加图片描述
请添加图片描述

四,自动定义监控tomcat

1.添加配置文件

cd /usr/local/tomcat
vi conf/server.xml
#添加一下内容
<Context path="/shop" docBase="/test" reloadable="false" crossContext="ture">
</Context>
#保存退出

2.添加自定义监控信息

vi /test/meminfo.jsp 
#添加一下内容
<% 
Runtime rtm = Runtime.getRuntime(); 
long mm = rtm.maxMemory()/1024/1024; 
long tm = rtm.totalMemory()/1024/1024; 
long fm = rtm.freeMemory()/1024/1024;  
out.println("JVM memory detail info :<br>"); 
out.println("Max memory:"+mm+"MB"+"<br>"); 
out.println("Total memory: "+tm+"MB"+"<br>"); 
out.println("Free memory: "+fm+"MB"+"<br>"); 
out.println("Available memmory can be used is :"+(mm+fm-tm)+"MB"+"<br>"); 
%>
#保存退出

3.测试效果

请添加图片描述

五,tomcat远程监控

1.开启JMX远程调试功能

注意:IP地址正确,端口使用其他没被使用的端口,以免端口冲突
vi bin/catalina.sh
#添加一下内容
CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.2.1  -Dcom.sun.management.jmxremote  -Dcom.sun.management.jmxremote.port=8085 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
#保存退出

2.配置认证用户

#不同方式安装的JDK会存在不同位置 使用 find / -name "management" 查找
cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre/lib/management

vi jmxremote.password
#G跳转到最后一行 去掉注释 修改密码即可
monitorRole  123456 
controlRole   123456 
#!mq强制保存退出即可

3.用户权限文件

cat jmxremote.access

monitorRole   readonly 		#只读
controlRole   readwrite \ controlRole  #具有更高权限 

4.给用户密码文件降权

#保证安全性
chmod 600 jmxremote.password jmxremote.access 

5.重启

/usr/local/tomcat/bin/catalina.sh stop
/usr/local/tomcat/bin/catalina.sh start

6.客户端连接测试

进入windown的JDK安装位置
默认位置:C:\Program Files\Java\jdk-18.0.2.1\bin

请添加图片描述

1.双击打开
添加tomcat端口和端口号(8085),刚刚在jmxremote.password中添加的用户名和密码,然后进行连接即可

请添加图片描述

连接,因为不是https协议,点击不安全的连接即可

请添加图片描述

效果:监控窗口

请添加图片描述

六,开启tomcat图像化管理工具

1.工具介绍

server status:查看当前服务状态信息
manager app:应用管理器
host manager:主机管理器

请添加图片描述

2.开启所有功能

1.可以接受所有IP请求(server status,manager app)
开放所有IP地址( ^.*$)匹配任意字符,应用环境中不建议使用
匹配IPV4地址严格写法:((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}
[root@localhost / ]# cd /usr/local/tomcat/
[root@localhost tomcat]# vim webapps/manager/META-INF/context.xml 
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow=" ^.*$" />[root@localhost cronolog-1.6.2]# cd /usr/local/tomcat/
2.可以接受所有IP请求(host manager)
[root@localhost tomcat]# vim webapps/host-manager/META-INF/context.xml
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow=" ^.*$" />[root@localhost cronolog-1.6.2]# cd /usr/local/tomcat/
3.创建登录用户
注意:将一下字段添加到/tomcat-users>之上
[root@localhost tomcat]# vim conf/tomcat-users.xml 
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="manager" password="123456" roles="manager-gui"/>
<user username="admin" password="123456" roles="admin-gui"/>

3.重启服务

[root@localhost tomcat]# /usr/local/tomcat/bin/catalina.sh stop
[root@localhost tomcat]# /usr/local/tomcat/bin/catalina.sh start

4.测试效果

server status与manager app需要使用manager用户登录

请添加图片描述
请添加图片描述

host manager需要使用admin用户登录

请添加图片描述
请添加图片描述

七,使用manager app部署网页

1.上传war包

请添加图片描述

2.查看目录状态

请添加图片描述

3.访问查看效果

请添加图片描述

八,错误信息(404)提示

1.添加错误配置信息

注意:内容添加到</web-app>字段之上
[root@localhost tomcat]# vi conf/web.xml
<error-page>
<error-code>404</error-code>
<location>/notfound.jsp</location>
</error-page>

2.编写提示错误信息

[root@localhost tomcat]# echo 'NOT FOUND' > webapps/ROOT/notfound.jsp

3.访问测试

查看为存在的文件路径

请添加图片描述

九,日志分割

1.安装cronolog工具

[root@localhost ~]# tar -zxf cronolog-1.6.2.tar.gz 
[root@localhost ~]# cd cronolog-1.6.2/
[root@localhost cronolog-1.6.2]# ./configure && make && make install 
[root@localhost cronolog-1.6.2]# which cronolog 
/usr/local/sbin/cronolog

2.修改日志配置

[root@localhost ~]# sed -i 's#>> "$CATALINA_OUT" 2>\&1 "&"#2>\&1 | /usr/local/sbin/cronolog "$CATALINA_BASE/logs/catalina-test-%Y-%m-%d.log" \&#g' /usr/local/tomcat/bin/catalina.sh

3.查看日志文件

[root@localhost tomcat]# ls logs/
catalina.2023-03-22.log       catalina.out                 localhost.2023-03-22.log             manager.2023-03-22.log
catalina-test-2023-03-22.log  host-manager.2023-03-22.log  localhost_access_log.2023-03-22.txt  zrlog

十,tomcat优化

1.JVM优化

[root@localhost tomcat]#  vi bin/catalina.sh
#第一行添加即可
set JAVA_OPTS=-Dfile.encoding=UTF-8
-server 
-Xms1024M 
-Xmx1024M 
-XX:NewSize=512M 
-XX:MaxNewSize=1024M 
-XX:PermSize=256M
-XX:MaxPermSize=356M 
-XX:NewRatio=2
-XX:MaxTenuringThreshold=50
-XX:DisableExplicitGC 

2.线程池设置

在Tomcat中,每一个用户请求都是 一个线程,所以可以使用线程池提高性能。 在配置文件server.xml的connector中引用,可以设置最大线程数为500,启动时最小线程为4,如下设置
[root@localhost tomcat]# vi conf/server.xml
#在service标签下添加内容一个标签exector
# <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThread="4"/>

#在connector标签的http1.1下边添加:
 executor="tomcatThreadPool

old=50
-XX:DisableExplicitGC


#### 2.线程池设置

在Tomcat中,每一个用户请求都是 一个线程,所以可以使用线程池提高性能。 在配置文件server.xml的connector中引用,可以设置最大线程数为500,启动时最小线程为4,如下设置


```bash
[root@localhost tomcat]# vi conf/server.xml
#在service标签下添加内容一个标签exector
# <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThread="4"/>

#在connector标签的http1.1下边添加:
 executor="tomcatThreadPool

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

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

相关文章

基于STM32+华为云设计的智慧烟感系统

一、概述 当前基于STM32和华为云,设计了一种智慧烟感系统,该系统可以检测烟雾,同时将检测到的数据上传到云端进行处理和分析。系统可用于家庭、办公室等需要安装烟雾报警器场所。 二、系统设计 2.1 系统硬件设计 【1】硬件平台 该系统主要使用STM32F103ZET6微控制器作为…

点成案例丨点成生物为苏州某药企完成水浴IQOQ验证

点成科普 在生物制药、食品卫生相关实验室中&#xff0c;实验室仪器对产品质量具有重要影响&#xff0c;而实验室仪器在投入使用前的3Q验证&#xff08;IQ、OQ、PQ&#xff09;则是通过设备验证进行产品质量保证的重要部分。3Q验证的具体含义如下&#xff1a; 安装验证 Inst…

Windows系统被faust勒索病毒攻击勒索病毒解密服务器与数据库解密恢复

在近期&#xff0c;一种名为faust后缀的勒索病毒威胁已经引起了全球计算机系统安全领域的关注。faust勒索病毒是一种基于RSA加密算法的恶意软件&#xff0c;能够加密目标计算机系统上的所有文件&#xff0c;并向用户勒索赎金来承诺解密恢复操作。下面为大家介绍一下Windows系统…

「 计算机网络 」TCP的粘包拆包问题

「 计算机网络 」TCP的粘包/拆包问题 参考&鸣谢 大病初愈&#xff0c;一分钟看懂TCP粘包拆包 雷小帅 TCP 的粘包拆包以及解决方案 一乐说 文章目录 「 计算机网络 」TCP的粘包/拆包问题一、前言二、为什么UDP没有粘包三、粘包拆包发生场景四、常见的解决方案五、Netty对粘包…

ChatGPT 平替天花板:HuggingFace 版 ChatGPT 来了,无需魔法无需等待直接起飞 ~

文章目录 ChatGPT 平替天花板&#xff1a;HuggingFace 版 ChatGPT 来了&#xff0c;无需魔法无需等待直接起飞 ~HuggingFace 简介HuggingChat 登场展望 ChatGPT 平替天花板&#xff1a;HuggingFace 版 ChatGPT 来了&#xff0c;无需魔法无需等待直接起飞 ~ 二话不说上链接 htt…

ChatGPT情商很高,但并不适合当搜索引擎

微软和谷歌正急于使用大型语言模型技术来强化搜索引擎。但有充分的理由认为&#xff0c;相比于提供事实性信息&#xff0c;这项技术更适合作为人们情感上的伴侣。 美媒评论称&#xff0c;目前基于大型语言模型的人工智能工具&#xff0c;例如ChatGPT&#xff0c;更擅长共情而不…

初访Chirper:一个禁止人类发言的人工智能社交网络,AI们居然在吵架,太6了

最近&#xff0c;在网上仅仅用ChatGPT和AI聊天已经不够刺激了&#xff0c;现在&#xff0c;AI已经有了属于自己的专属社区&#xff1a;Chirper 简而言之&#xff0c;这是一个禁止人类发帖、评论、转发的类推特网站。人类进去后只能看见&#xff1a;成千上万个AI聊天机器人在其…

[特征提取与匹配]基于Open CV使用SIFT提取特征,并使用FLANN完成单应性匹配

关于单应性 单应性&#xff1a;当一张图是另一张图的一个透视畸变时&#xff0c;在两张图中寻找彼此的一种情况 实现步骤 导入需要的库&#xff1b;读取两张灰度图像作为匹配对象&#xff1b;创建SIFT对象&#xff0c;用于检测SIFT特征点并计算描述子&#xff1b;在两张图像…

提效篇 |当项目紧急入场,如何先测量后校正?

施工队进场后&#xff0c;设计院还没交桩怎么办&#xff1f; 部分工程由于设计与施工间隔时间较久&#xff0c;导致控制点被破坏、复测未通过怎么办&#xff1f; 工期紧张&#xff0c;难道只能干等吗&#xff1f; 答案是&#xff1a;先测量后校正&#xff01;与常规RTK作业不…

tensorflow基础

tensorflow基础 &#xff08;一&#xff09;编程模型&#xff08;1&#xff09;编程模型中的运行机制&#xff08;2&#xff09;编写hello world程序&#xff08;3&#xff09;使用注入机制进行代码编写&#xff08;4&#xff09;保存和载入模型的方法介绍&#xff08;4.1&…

代码随想录|day58|单调栈part01 ● 739. 每日温度 ● 496.下一个更大元素 I

739. 每日温度 链接&#xff1a;代码随想录 今天正式开始单调栈&#xff0c;这是单调栈一篇扫盲题目&#xff0c;也是经典题。 大家可以读题&#xff0c;思考暴力的解法&#xff0c;然后在看单调栈的解法。 就能感受出单调栈的巧妙 fvfdvsf fdfd ddf fdd fd fsd 496.下一个更…

轻量级服务器nginix:如何实现Spring项目的负载均衡

这里写目录标题 一 生成war包并给数据库导入数据1.1生成war包1.2 向数据库中导入数据 二 启动Tomcat三 配置负载均衡并启动Nginx1.cent121这台虚拟机上2.检测两个tomcat的运行状态3.配置nginx4.启动4.1 nginx报错4.2 成功启动项目 四 命令总结 一 生成war包并给数据库导入数据 …

docker和k8s基础介绍

一 Docker介绍 1.1 docker是什么 Docker 是一个开源项目&#xff0c; 诞生于 2013 年初&#xff0c;最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会&#xff0c;遵从了 Apache 2.0协议&#xff0c; 项目代码在…

SQL——索引

&#x1f4a1; 索引 在关系型数据库中&#xff0c;索引是一种单独的、物理上的对数据库表中的一列或多列的值进行排序的一种存储结构&#xff0c;他是某个表中的一列或着若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单&#xff08;类似于图书目录&#x…

RF技术设计的机械数码一体化防盗锁

机械数码一体化防盗锁在传统锁具的基础上增加了一个受控的弹子&#xff0c;只能通过设置过的合法钥匙开启&#xff0c;并且增加了防盗报警功能。本文介绍了基于PIC单片机、RF技术和无线数据传输技术的机械数码一体化防盗锁的设计。 引言 机械锁和数码锁是我们日常生活中最常见的…

CDGA|数据监管越来越严,数据治理发展何去何从?

尽管数据监管越来越严格&#xff0c;但仍然存在许多机会。事实上&#xff0c;数据监管的加强可能会促进金融科技行业更好地运用数据&#xff0c;激发金融科技行业更多的创新和合作,创造更多的价值和机会。 推动金融机构重视数据安全和隐私保护 促使他们采取更严格的安全措施&a…

Ueditor 富文本编辑器 插入 m3u8 和 mp4 视频(PHP)

当前环境&#xff1a;PHP、Ueditor的版本是1.4.3 新的需求是&#xff0c;需要在Ueditor 富文本编辑器中&#xff0c;插入视频播放&#xff0c;并且视频格式有MP4&#xff0c;也有M3U8。 百度编辑器默认的是embed&#xff0c;需要修改下配置。 ueditor.all.js和 ueditor.confi…

C++vector的动态扩容,为何是1.5倍或者是2倍

1. vector如何进行扩容 当插入元素时&#xff0c;如果size capacity&#xff0c;触发扩容机制。 拷贝元素释放旧空间 2. 如何避免扩容导致效率低 在插入前&#xff0c;预估好vector的容量&#xff0c;通常使用reserve。如果没有reserve&#xff0c;边插边扩容&#xff0c;…

ROS学习7:ROS机器人导航仿真

【Autolabor初级教程】ROS机器人入门 1. 概述 在 ROS 中机器人导航 (Navigation) 由多个功能包组合实现&#xff0c;ROS 中又称之为导航功能包集&#xff0c;关于导航模块&#xff0c;官方介绍如下 一个二维导航堆栈&#xff0c;它接收来自里程计、传感器流和目标姿态的信息&a…

汽车智能化「出海」红利

在高阶智能座舱中&#xff0c;车载导航产品作为与用户体验息息相关的模块之一&#xff0c;同样也进入了升级迭代周期。 基于高精度地图渲染、高精度定位算法、AR等技术的车道级导航、AR导航等产品快速上车&#xff0c;但同时随着人机交互多模发展以及3D沉浸式用户体验需求趋势下…