Tomcat中间件方方面面储备知识
Tomcat中间件方方面面储备知识
该文章来源:
仅做个人备份学习使用。
LNMT
1.JAVA简介
常见的大型平台有LNMP、LNMP、LNMT
JAVA:LNMT(T表示Tomcat容器,放java代码的)
Tomcat
resin
weblogic(配合oracle数据库进行使用)
环境 | 处理模型 | 处理用户请求区别 |
---|---|---|
lnmp | epoll(异步)缓存 | 通过fastcgi交给php-fpm进行处理 |
lamp | select(同步)遇到一个处理一个 | lamp通过Apache模块与php进行沟通 |
异步类似于有一张表,根据对应的信息找对应的页面
同步类似于在一个目录中,在每一个文件中找想要的信息
2.Tomcat必备知识
- tomcat部署
- 目录结构
- 配置tomcat管理功能
- 部署jpress
- tomcat多实例
- tomcat监控
- tomcat安全优化
- Tomcat:apache-tomcat
- 与Tomcat有关的
- jvm:java virtual machine java虚拟机
- 解决了代码的可移植性,1份代码处处使用
- 占用内存
- jdk java development kit java开发环境
- java命令
- jvm环境
- jdk版本
- oracle jdk 官网下载
- openjdk Linux自带,开源
3.Tomcat环境搭建
服务器 192.168.81.210 ens33
3.1.jdk
3.2.Tomcat
3.3.启动与管理
- startup.sh 启动
- shutdown.sh 关闭
- catalina.sh 核心脚本
启动分析
4.Tomcat目录结构
-
bin tomcat管理命令 startup.sh shutdown.sh catalina.sh
- catalina.sh是startup.sh和shutdown.sh都会调用的
- 以后对于Tomcat优化(jvm优化 设置最大内存 最小内存)和配置监控功能
-
conf 配置文件存放目录
- server.xml(相当于nginx.conf)都是主配置文件
- web.xm 如果要增加插架或者优化都需要修改此文件
- tomcat-users.xml tomcat管理端配置文件
-
webapps tomcat的站点目录类似于nginx的html
-
log 日志文件存放目录
-
catalina.out tomcat的核心日志文件,存放着从启动到关闭做的所有操作,这个文件会持续变大持续增加,即使做了日志切割这个文件也不会缩小
-
catalina.2019-09-20.log catalina.out切割出来的日志,Linux系统有一个切割工具logrotate,yum装的程序默认会采用这个进行切割
-
localhost.2020-03-31.log tomcat的访问日志和nginx的access.log基本一致
-
5.配置Tomcat管理功能
启动完tomcat点下图框中默认会报错,因为没有账号密码,尝试多次后会报401
我们需要修改conf/tomcat-users.xml文件即可,下载在登录时输入username当时配置的即可正常登录
tomcat8.5以后的版本默认只允许机访问,换需要修改webapps/manager/META-INF/context.xml
6.部署jpress
6.1.数据库准备
6.2.获取jpress代码
- 我们去重启一下tomcat
- jpress的配置文件位于webapps/jpress/WEB-INF/classes, db.properties
- 安装完成默认是进入整体的首页,我们可以使用单独账号进行登录
- 然后去访问http://192.168.81.210:8080/jpress/admin
-
可以写一篇文章并上传图片
-
在jpress/attachment/20200331/目录可以看到用户上传的附件
-
可以看到jpress中的表
-
删除这条记录,页面的文章跟着消失
-
在插回去,内容还会存在
7.显示jvm内存信息
8.Tomcat主配置文件
9.Tomcat多实例配置
一台主机可能会跑多个tomcat
10.Tomcat监控
监控方式
- 简单命令
- 现成脚本
- 通过zabbix自定义监控
- 自定义监控 只要是用命令能得到的东西都能去监控
- 通过jmx 对java进行监控
- 其他监控
- 通过ipmi 监控硬件的
- 通过snmp 监控网络设备的,只要支持snmp都能监控
java自带的监控命令
-
jps 导出java相关的进程
-
格式:jps -lvm
-
参数选项:-lvm最详细
-
jmap 导出jvm信息,常用于自定义监控
-
格式:jmap pid
-
参数:-heap
-
jstatck 导出java的进程信息,常用于java程序故障,需要导出线程信息与开发一起研究
-
格式:jstack -l pid
-
tomcat故障案例:系统负载高,tomcat占用CPU较高
- 1.jps/top/htop精确确定哪个java进程导致
- 2.jstack导出java线程
- 3.catalina.out日志分析
- 4.jmap导出jvm信息,可以通过mat工具进行分析
-
tomcat监控
-
自定义监控:直接在tomcat服务器上写好脚本,在zabbix配置文件写好就行
-
首先需要在zabiix服务端安装zabbix-java-gateway然后在tomcat服务器开启监控功能
-
tomcat开启jmx监控功能
-
可以使用jsconsole进行测试
11.Tomcat安全优化
tomcat安全管理规范
- 修改8005端口的暗号
- 修改8009端口
- 禁用管理端
- 降权启动,tomcat一般以普通用户进行管理
- 关闭文件列表功能
- 版本信息隐藏,tomcat报错后会有版本提示,定义一个error-code
- server header重写,修改http响应头中的服务端名称
- 设置访问限制
- 脚本权限设置
- 日志设置
12.Tomcat总结
- tomcat故障案例
- tomcat安全优化
- tomcat目录 配置
- 多实例
- 监控