当前位置: 首页 > article >正文

【Tomcat】初识 Web 中间件 Tomcat

Web中间件Tomcat1.模拟部署Tomcat[rootNginx-1 Tomcat]# lsapache-tomcat-7.0.42.tar.gz apache-tomcat-9.0.1.tar.gz jdk-8u151-linux-x64.tar.gz jspgouV6-ROOT.zip[rootNginx-1 Tomcat]# tar -xf jdk-8u151-linux-x64.tar.gz -C /usr/local/[rootNginx-1 Tomcat]# ln -s /usr/local/jdk1.8.0_151/ /usr/local/java[rootNginx-1 Tomcat]# ll /usr/local/javalrwxrwxrwx1root root24Apr1613:32 /usr/local/java -/usr/local/jdk1.8.0_151/[rootNginx-1 Tomcat]# vim /etc/profileJAVA_HOME/usr/local/javaPATH$JAVA_HOME/bin:$PATHexportJAVA_HOMEPATH[rootNginx-1 Tomcat]# source /etc/profile[rootNginx-1 ~]# java -versionjavaversion1.8.0_151Java(TM)SE Runtime Environment(build1.8.0_151-b12)Java HotSpot(TM)64-Bit Server VM(build25.151-b12, mixed mode)[rootNginx-1 Tomcat]# tar -xf apache-tomcat-7.0.42.tar.gz -C /usr/local/[rootNginx-1 Tomcat]# ll /usr/local/tomcatlrwxrwxrwx1root root32Apr1613:37 /usr/local/tomcat -/usr/local/apache-tomcat-7.0.42/[rootNginx-1 Tomcat]# vim /etc/profileCATALINA_HOME/usr/local/tomcatexportCATALINA_HOME[rootNginx-1 Tomcat]# source /etc/profile[rootNginx-1 ~]# useradd -r -s /sbin/nologin -d /usr/local/tomcat tomcat[rootNginx-1 ~]# chown -R tomcat:tomcat /usr/local/tomcat[rootNginx-1 ~]# cat /etc/systemd/system/tomcat.service EOF[Unit]DescriptionApache Tomcat Web Application ContainerAfternetwork.target[Service]TypeforkingUsertomcatGrouptomcatEnvironmentJAVA_HOME/usr/local/javaEnvironmentCATALINA_HOME/usr/local/tomcatEnvironmentCATALINA_OPTS-Xms512m -Xmx1024m -XX:UseG1GC -XX:MaxGCPauseMillis200ExecStart/usr/local/tomcat/bin/startup.shExecStop/usr/local/tomcat/bin/shutdown.shRestarton-failureLimitNOFILE65536[Install]WantedBymulti-user.target EOF[rootNginx-1 ~]# systemctl daemon-reload[rootNginx-1 ~]# systemctl restart tomcat[rootNginx-1 ~]# systemctl status tomcat[rootNginx-1 ~]# ss -antlupe | grep java# 浏览器访问 http://172.25.254.44:8080 生产建议永远不要用 root 运行 Tomcat。创建专用用户并赋权[rootNginx-1 ~]# useradd -r -s /sbin/nologin tomcat[rootNginx-1 ~]# chown -R tomcat:tomcat /usr/local/tomcat2.核心配置文件深度解析2.1Tomcat主目录介绍[rootNginx-1 ~]# tree -L 1 /usr/local/tomcat//usr/local/tomcat/ ├── bin# 存放tomcat管理脚本├── conf# tomcat配置文件存放目录├── lib# web应用调用的jar包存放路径├── LICENSE ├── logs# tomcat日志存放目录catalina.out为主要输出日志├── NOTICE ├── RELEASE-NOTES ├── RUNNING.txt ├── temp ├── webapps# web程序存放目录└── work# 存放编译产生的.java与.class文件2.2webapps目录介绍[rootNginx-1 webapps]# pwd/usr/local/tomcat/webapps[rootNginx-1 webapps]# tree -L 1 ..├── docs# tomcat帮助文档├── examples# web应用实例├── host-manager# 主机管理├── manager# 管理└── ROOT# 默认站点根目录2.3 默认网站的主目录主页[rootNginx-1 ROOT]# ls /usr/local/tomcat/webapps/ROOT/2.4Tomcat配置文件目录介绍[rootNginx-1 conf]# pwd/usr/local/tomcat/conf[rootNginx-1 conf]# tree -L 1 ..├── Catalina ├── catalina.policy ├── catalina.properties ├── context.xml ├── logging.properties ├── server.xml# Tomcat主配置文件├── tomcat-users.xml# Tomcat管理用户配置文件└── web.xml2.5server.xml关键节点!-- 连接器处理 HTTP 请求 --Connectorport8080protocolHTTP/1.1connectionTimeout20000redirectPort8443maxThreads200!--最大工作线程--minSpareThreads25!-- 初始空闲线程 --acceptCount100!-- 等待队列长度 --URIEncodingUTF-8 /!-- 虚拟主机一个 Engine 可包含多个 Host --Hostnameapi.example.comappBasewebapps_apiunpackWARstrueautoDeployfalseValveclassNameorg.apache.catalina.valves.AccessLogValvedirectorylogsprefixapi_access_logsuffix.txtpattern%h %l %u %tquot;%rquot;%s %b//Host⚠️autoDeploytrue在开发环境方便但生产环境必须关闭避免热部署导致内存泄漏或类加载冲突。3.性能调优及安全加固3.1 调优参数参数CATALINA_OPTS在bin/setenv.sh推荐或 systemd 的Environment中设置exportCATALINA_OPTS-Xms1g -Xmx2g \ -XX:UseG1GC -XX:MaxGCPauseMillis200 \ -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/tmp/tomcat_heapdump.hprof \ -Djava.security.egdfile:/dev/./urandom \ -Dfile.encodingUTF-8 -Duser.timezoneAsia/Shanghai参数说明-Xms/-Xmx堆内存初始/最大值生产建议设为相等UseG1GCJDK8u191 推荐垃圾回收器延迟低java.security.egd解决 Tomcat 启动慢SecureRandom 阻塞file.encoding/timezone避免中文乱码、时间差问题3.2 安全加固清单删除无用默认应用rm-rf/usr/local/tomcat/webapps/{docs,examples,host-manager,manager,ROOT}禁用 AJP 协议除非配合 Apache httpd mod_jk!-- server.xml 中注释掉或删除 --!-- Connector port8009 protocolAJP/1.3 redirectPort8443 / --隐藏版本信息# 创建 lib/catalina.jar 中的 org/apache/catalina/util/ServerInfo.propertiesmkdir-p/usr/local/tomcat/libcat/usr/local/tomcat/lib/org/apache/catalina/util/ServerInfo.propertiesEOF server.infoWebServer server.number0.0.0.0 server.built2024-01-01 EOF限制上传文件大小web.xml或应用内配置filterfilter-namesizeLimitFilter/filter-namefilter-classorg.apache.tomcat.websocket.server.WsFilter/filter-classinit-paramparam-namemaxFileSize/param-nameparam-value10485760/param-value!-- 10MB --/init-param/filter4.常见故障排查速查表及日志分析技巧现象可能原因排查命令/日志位置启动卡住/慢SecureRandom 阻塞cat /proc/sys/kernel/random/entropy_availjava.net.BindException端口被占用ss -tlnp | grep :8080OutOfMemoryError堆内存不足/内存泄漏分析heapdump.hprof检查catalina.out请求超时/拒绝线程池打满jstack pid | grep -c http-nio-8080中文乱码URIEncoding/文件编码未设检查 Connector 和file.encodingManager 403 拒绝访问未配置角色或IP限制检查tomcat-users.xml和context.xml中的RemoteAddrValve日志分析技巧# 实时跟踪核心日志tail-f/usr/local/tomcat/logs/catalina.out# 搜索错误堆栈grep-C5Exception\|Error/usr/local/tomcat/logs/catalina.out# 查看访问日志需开启 AccessLogValveawk{print $1}/usr/local/tomcat/logs/localhost_access_log.*.txt|sort|uniq-c|sort-nr|head

相关文章:

【Tomcat】初识 Web 中间件 Tomcat

Web中间件Tomcat 1.模拟部署Tomcat [rootNginx-1 Tomcat]# ls apache-tomcat-7.0.42.tar.gz apache-tomcat-9.0.1.tar.gz jdk-8u151-linux-x64.tar.gz jspgouV6-ROOT.zip[rootNginx-1 Tomcat]# tar -xf jdk-8u151-linux-x64.tar.gz -C /usr/local/ [rootNginx-1 Tomcat]# ln…...

AGI实用化窗口期仅剩37个月?——从LLM推理能耗拐点、世界模型训练效率跃迁与具身智能硬件量产进度三重急迫信号切入

第一章:AGI发展时间线预测与争议 2026奇点智能技术大会(https://ml-summit.org) 通用人工智能(AGI)的时间线预测始终处于高度分歧之中,不同研究机构、AI实验室与思想领袖基于模型缩放律、神经科学进展、算力增长曲线及认知架构突…...

为什么硬件工程师需要一个免费开源的电路板查看器?

为什么硬件工程师需要一个免费开源的电路板查看器? 【免费下载链接】OpenBoardView View .brd files 项目地址: https://gitcode.com/gh_mirrors/op/OpenBoardView 你是否曾面对复杂的电路板设计文件却找不到合适的查看工具?当设备出现故障时&…...

消达人s系列微纳米臭氧水机实操指南

很多新手鸡爪加工厂,面对微纳米臭氧水机,不知道如何选型、如何操作,导致设备无法发挥最佳效果,甚至出现操作失误、设备故障等问题,影响生产进度。消达人s系列微纳米臭氧水机,操作简单、适配性强&#xff0c…...

别再搞混了!一文讲清舵机PWM、伺服脉冲和占空比的区别(附示波器实测波形图)

舵机控制信号深度解析:PWM、伺服脉冲与占空比的技术本质 从电机控制到位置伺服:信号类型的根本差异 第一次接触舵机控制时,很多人会下意识地认为舵机和普通直流电机一样使用PWM信号控制——这种误解在创客社区和嵌入式新手群体中相当普遍。实…...

5个实战技巧:用ChatGPT写编程提示词避坑指南(附Python示例)

5个实战技巧:用ChatGPT写编程提示词避坑指南(附Python示例) 在AI辅助编程的时代,编写有效的提示词(Prompt)已成为开发者必备的核心技能。本指南将聚焦Python开发场景,通过5个经过实战检验的技巧…...

龙泉驿全屋智能选哪家?诺亚家总部直营+1小时服务圈,比本地店省30%

​在成都,说到“东进”和宜居,龙泉驿绝对是热门选项。这里的业主,多是追求生活品质的年轻家庭和改善型住户。随着装修季的到来,“全屋智能”几乎成了龙泉驿新家的标配。但问题也来了:市场品牌眼花缭乱,本地…...

从零到一:用RPO与RTO构建你的企业灾备蓝图

1. 为什么企业需要关注RPO和RTO? 想象一下,你经营着一家24小时营业的连锁超市。某天深夜,收银系统突然崩溃,所有交易记录都消失了。这时候你会面临两个关键问题:第一,丢失了多少笔交易记录(这是…...

问界入局豪华超充 云服务调价信号显现 游宝阁用户价值放量 半固态电池与具身智能同步落地

2026年4月17日 光锥产业快报聚焦每日热点,洞察产业趋势与商业风向从豪华新能源基础设施阵营重组,到云服务基础能力价格调整;从游戏交易平台用户价值持续放大,到手机端 AI 智能体获得权威认证;从半固态电池首次规模落地…...

OBS Advanced Timer:直播时间管理的终极解决方案

OBS Advanced Timer:直播时间管理的终极解决方案 【免费下载链接】obs-advanced-timer 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-timer 在直播的世界里,时间就是一切。无论是教学直播的章节控制、游戏直播的BOSS战计时&#x…...

手把手教你用CUDA_LAUNCH_BLOCKING=1精准定位PyTorch GPU训练中的诡异断言错误

手把手教你用CUDA_LAUNCH_BLOCKING1精准定位PyTorch GPU训练中的诡异断言错误 当你在PyTorch中进行GPU加速的深度学习训练时,突然遇到RuntimeError: CUDA error: device-side assert triggered这样的错误,往往会感到无比头疼。这种错误信息通常极其模糊&…...

从“按键精灵”到“内存修改器”:聊聊我这些年见过的游戏外挂技术演变史

游戏外挂技术二十年:从脚本小子到内存猎手的进化之路 2003年夏天,我在网吧第一次见识到《传奇》的"自动打怪"外挂——那个简陋的窗口上只有五个按钮,却让周围所有玩家趋之若鹜。二十年后的今天,当我在《Apex英雄》中遇到…...

LanzouAPI技术解析:如何用单文件PHP脚本破解蓝奏云下载迷局

LanzouAPI技术解析:如何用单文件PHP脚本破解蓝奏云下载迷局 【免费下载链接】LanzouAPI 蓝奏云直链,蓝奏api,蓝奏解析,蓝奏云解析API,蓝奏云带密码解析 项目地址: https://gitcode.com/gh_mirrors/la/LanzouAPI …...

不是每一天都闪闪发光,但也都算数

不是每一天都闪闪发光,但也都算数上大学以前,我对大学生活其实有很多想象。我以为大学会是那种很“热烈”的阶段。每天都过得很充实,社团、比赛、朋友、学习、自我提升,生活像开了倍速一样往前冲。好像只要迈进大学校门&#xff0…...

web ui自动化测试

AI提示词1.自动生成测试用例【截图】博客系统登录⻚⾯ 根据图⽚提供的登陆界⾯设计UI⾃动化测试⽤例,⻚⾯包含标题、导航栏和登陆表单模块要求: 1)⽤例包含登陆功能(正常、异常)、导航栏的跳转、标题的验证 2&#xff…...

Redis如何在应用启动时预热缓存数据

不可靠。应用启动时直接调用 redis-cli 或客户端批量写入易因 Redis 未就绪、网络不通、认证失败等导致失败,且缺乏重试、超时、幂等控制;应优先在应用层用客户端实现预热,并做好健康检查、分批写入与内存管控。应用启动时调用 redis-cli 或客…...

深度学习篇---预测模型训练过程中涉及的所有“维度”概念以及流程的动态变化

预测模型与分类模型虽然同属监督学习,但在输出维度、损失函数形态和评价体系上有本质区别。我们从“回归预测”的视角来拆解训练中涉及的维度概念及其动态演变。一、 数学维度流:从高维空间到连续实数值的映射预测模型的核心目标是拟合一个连续函数 yf(X…...

【人工智能】Seedream(即梦AI) 是字节跳动自研图像生成模型,Seedream API_KEY 怎么申请

Seedream(即梦AI) 是字节跳动自研图像生成模型,分国内火山引擎(火山方舟)官方、国际BytePlus、第三方中转平台三种API_KEY申请渠道,国内用户优先走火山引擎官方,无需翻墙、支持手机号、有免费额度,下面是完整详细步骤。 一、国内官方(火山引擎火山方舟,首选) Seed…...

深度学习篇---分类模型训练过程中涉及的所有“维度”概念以及流程的动态变化

这里的“维度”有两层含义:一是数学维度,即数据张量在模型各层中的形状变化;二是工程维度,即控制训练过程和模型容量的超参数空间。理解这两者的协同变化,是掌握深度学习训练逻辑的关键。一、 数学维度流:张…...

普冉001休眠配置

/********************************************************* PY001休眠函数详解 *********************************************************/ /********************************************************* * 函数名: MCU_Sleep * 说 明: 休眠函数 * 输 入: 无 …...

深度学习篇---解释模型的“注意力”的热图

“热图”(Heatmap)这个名字很形象,它本质上是一种将数据值映射为颜色,并通过颜色深浅或色调变化来直观呈现数据分布、密度或强度的可视化工具。无论应用于哪个领域,其核心目的都是帮助我们快速识别数据中的模式、聚类、…...

2025届学术党必备的六大AI学术方案推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 此时此刻,伴随AI技术被广泛运用,针对AI生成内容的检测变得日益严谨。…...

Oracle学工系统实战:手把手教你用SQLMAP绕过某商业WAF(附垃圾数据包脚本)

Oracle数据库安全实战:WAF绕过技术与SQL注入防御策略 在数字化时代,数据安全已成为企业生存发展的生命线。作为关系型数据库的"老牌贵族",Oracle在企业级应用中占据重要地位,但同时也成为黑客攻击的重点目标。本文将深入…...

如何用RL4CO构建智能决策引擎:5分钟掌握强化学习组合优化

如何用RL4CO构建智能决策引擎:5分钟掌握强化学习组合优化 【免费下载链接】rl4co A PyTorch library for all things Reinforcement Learning (RL) for Combinatorial Optimization (CO) 项目地址: https://gitcode.com/gh_mirrors/rl/rl4co RL4CO是一个强大…...

RDKit终极指南:从零开始掌握化学信息学与药物设计

RDKit终极指南:从零开始掌握化学信息学与药物设计 【免费下载链接】rdkit The official sources for the RDKit library 项目地址: https://gitcode.com/gh_mirrors/rd/rdkit RDKit是化学信息学领域最强大的开源工具包之一,专门用于分子结构处理、…...

性能测试方法

性能测试方法是软件开发过程中不可或缺的一环,它通过模拟真实用户行为,评估系统在高负载下的表现能力,确保系统稳定性和可靠性。无论是电商平台的高并发抢购,还是金融系统的实时交易,性能测试都能帮助团队提前发现瓶颈…...

SpringBoot 声明式事务与编程式事务

上一篇我们详细讲解了 Transactional 注解的用法、原理和失效场景,其实 Transactional 属于「声明式事务」,是 SpringBoot 中最常用的事务管理方式。但很多开发者不知道,SpringBoot 还支持另一种事务管理方式——「编程式事务」。实际开发中&…...

3步搞定AI视频生成:ComfyUI-WanVideoWrapper终极入门指南

3步搞定AI视频生成:ComfyUI-WanVideoWrapper终极入门指南 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 想要在ComfyUI中轻松实现AI视频生成?ComfyUI-WanVideoWrapper是…...

暗黑破坏神2存档编辑终极指南:使用d2s-editor打造完美角色

暗黑破坏神2存档编辑终极指南:使用d2s-editor打造完美角色 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否想在暗黑破坏神2中自由调整角色属性、打造理想装备、优化游戏进度?d2s-editor为你提供了完…...

区块链应用·数据共享消除数字鸿沟

基于FISCO BCOS与Go语言构建可信数据共享基础设施,打通跨机构、跨地域的信任壁垒 一、数字鸿沟的根源:信任缺失下的“数据孤岛” 数字鸿沟(Digital Divide)不仅存在于不同区域、不同群体之间,更深层次地体现在数据持有者之间的信任鸿沟。在传统信息系统中,数据分散存储于…...