tomcat

web服务

nginx: 轻量级、web 反向代理、简单的负载均衡,处理静态数据的能力比较好;并发量2.5万
apache: 重量级,处理动态数据的能力比较好
tomcat: java的web服务,手机app大部分都使用的tomcat
lamp和lnmp 架构 index.html index.php,php作为中间件,php是能够加载index.php页面

tomcat

是基于java开发的,它只支持index.html和index.jsp页面,java能够解析index.jsp的文件;

Tomcat服务器是一个免费的开放源代码的Web应用服务器。Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet(java编写的一个web程序) 和JSP规范总是能在Tomcat中得到体现,Tomcat 5支持最新的Servlet 2.4和JSP 2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,是目前比较流行的Web应用服务器。
对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。
在这里插入图片描述
Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容。Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。
JSP是servlet的扩展,可以认为JSP = HTML + Java代码 + JSP标签
Servlet获取请求数据和处理数据非常方便,但是向页面输出并显示数据(html标签)非常麻烦,毫无格式
jsp显示数据非常方便,像html格式一样,但是封装数据和处理数据比较麻烦

tomcat的作用:
用来对服务器上的web提供访问权限控制,并且具有处理HTML页面的功能

tomcat的优点:
兼有可扩展性和安全性,性能稳定

1、兼有可扩展性和安全性。假如单位时间内访问请求数急剧增加,可以用相对较低的费用增加前端的能力。
2、比较容易扩展。由于是通过在这台功能强大的服务器上运行的单个servlet容器,实际上也就不需要考虑session状态在分布式环境下的维护这类复杂的问题。
3、台后端服务器在外界不可以访问,网上的黑客只能访问前端的web服务器,不能直接访问后端的应用服务器,这就提高了安全性。但这并不意味着黑客们不能通过网络浏览器进行其它形式的攻击。
这种类型的站点的主要特点是每一个页面都可能是动态生成的,但这些数据中主要部分还是静态的(比如,各类图像GIF、JPG、PNG,流式媒体等)。想象以下某个站点采用了多个用于负载均衡的硬件设备,这些设备后端连结一组服务器,这些服务器可能是一组相对廉价的运行apache的linux服务器簇。这组位于前端的服务器簇将仅占总访问请求的10%的真正需要调用servlet的访问请求发送给后段的系统,后锻系统可以是一台Sun的E3500,或是IBM的AS/400,在这个后端的系统上运行着Tomcat,可能还包括企业级数据库。

tomcat的应用:
web应用服务器,可以作为中间件处理index.jsp的文件

jdk介绍

jdk(java development kit) 是java语言的软件开发工具包
其中基本组件包括:

javac – 编译器,将源程序转成字节码 
jar – 打包工具,将相关的类文件打包成一个文件 
javadoc – 文档生成器,从源码注释中提取文档 
jdb – debugger,查错工具 
java – 运行编译后的java程序(.class后缀的) 
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。 
Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。 
Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。 
Jconsole: Java进行系统调试和监控的工具 
xtcheck:一个检测jar包冲突的工具 
apt:注释处理工具 
jhat:java堆分析工具 
jstack:栈跟踪程序 
jstat:JVM检测统计工具 
jstatd:jstat守护进程 
jinfo:获取正在运行或崩溃的java程序配置信息 
jmap:获取java进程内存映射信息 
idlj:idl-to-java编译器,将IDL语言转化为java文件 
policytool:一个GUI的策略稳健和管理工具 
jrunscript:命令行脚本运行 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

安装tomcat前要先安装jdk环境
因为版本的原因 需要重新安装一个新的jdk工具包 也就是java环境
准备一台虚拟机,拖入相关的软件包

[root@localhost ~]# java -version
openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)
[root@localhost ~]# rm -rf /usr/bin/java #删除原本主机上的Java程序
[root@localhost ~]# java -version
-bash: /usr/bin/java: 没有那个文件或目录
[root@localhost ~]# tar -zxf jdk-8u201-linux-x64.tar.gz 
[root@localhost ~]# mv jdk1.8.0_201/ /usr/local/java
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

能够让命令全局使用的方法:
1、制作软链接

ln  -s  /usr/local/java/bin/*   /usr/bin/
  • 1

2、添加环境变量(通常情况我们使用第二种方法)

[root@localhost bin]# vim /etc/profile
#末尾添加
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
#释义:
#export:声明一个变量
#jre   java  runtime   environment : java的运行环境
#class   java  依赖库文件
#path  环境变量
[root@localhost bin]# source /etc/profile
[root@localhost bin]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin:/usr/local/java/jre/bin
[root@localhost bin]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

注:
自己添加的环境变量,只能针对当前的shell和其子shell,如果另打开一个shell环境则需要重新生效

安装tomcat

[root@localhost ~]# tar -zxf apache-tomcat-8.5.35.tar.gz 
[root@localhost ~]# mv apache-tomcat-8.5.35 /usr/local/tomcat
[root@localhost ~]# cd /usr/local/tomcat/
[root@localhost tomcat]# cd bin/
[root@localhost bin]# ./startup.sh  #启动
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# netstat -anput | grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      58093/java          
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      58093/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      58093/java
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

访问192.168.10.30:8080(本机ip)
在这里插入图片描述
tomcat软件目录结构功能
bin: 服务相关的脚本文件,可执行的文件,例如:关闭、开启脚本
conf:里面存放的是配置文件,xml结尾
lib:tomcat运行需要的依赖库文件
logs:运行的日志文件
webapps:web应用程序部署的目录,也就是站点根目录,页面是jsp或html结尾
work:存放着jsp编译后的class文件;class类文件也就是java程序编译后生成的文件

tomcat的多主机实例
虚拟主机,让一台主机可以运行多个tomcat

[root@localhost ~]# cp -r /usr/local/tomcat/ /usr/local/tomcat1
[root@localhost ~]# ls /usr/local/
bin  etc  games  include  java  lib  lib64  libexec  sbin  share  src  tomcat  tomcat1
[root@localhost ~]# cd /usr/local/tomcat1/conf/
[root@localhost conf]# vim server.xml
22 <Server port="8006" shutdown="SHUTDOWN">
69     <Connector port="8081" protocol="HTTP/1.1"
71                redirectPort="8444" />
116     <Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
[root@localhost conf]# cd ..
[root@localhost tomcat1]# ./bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat1
Using CATALINA_HOME:   /usr/local/tomcat1
Using CATALINA_TMPDIR: /usr/local/tomcat1/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat1/bin/bootstrap.jar:/usr/local/tomcat1/bin/tomcat-juli.jar
Tomcat started.
[root@localhost tomcat1]# netstat -anput | grep 8081
tcp6       0      0 :::8081                 :::*                    LISTEN      58441/java
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

访问8081端口进行验证
在这里插入图片描述

Tomcat架构

1 server
提供一个接口让其他程序能够访问到service集合、同时要维护它所包含的所有service的生命周期,包括如何初始化、如何结束服务、如何找到别人要访问的service
2 service
Service是server下一个集合,service包含多个接收请求的connector并有一个处理所有连接的容器container
3 connector
Connector作用是监听客户端请求,并将请求封装提交container处理,然后将处理结果返回客户端。

Tomcat有两个典型的connector,一个用来监听浏览器的http请求,另一个是用来监听来自其他服务器的请求coyote http/1.1 connector 在端口8080处侦听来自客户browser的http请求。
Coyote AJP/1.3 connector 在端口8009处侦听来自其他webserver(apache)的servlet/jsp代理请求

4 container
1 engine
Engine下可以配置多个虚拟主机virtual host,每个虚拟主机都有一个域名,当engine获得一个请求时,它把该请求匹配到某个host上,然后把该请求交给host来处理。
Engine 有一个默认虚拟主机,当请求无法匹配到任何一个host上的时候,将交给该默认host来处理localhost

2 host
代表一个virtual host ,虚拟主机,每个虚拟主机和某个网络域名domain name相匹配。
每个虚拟主机下都可以部署(deploy)一个或者多个web app,每个web app对应一个context,有一个context path。
当host获得一个请求时,将把该请求匹配到某个context上,然后把该请求交给该context来处理。
所有无法和其他context的路径名匹配的请求都将最终和该默认context匹配。

3 context
一个context对应于一个web application
一个web application 由一个或者多个servlet组成。

tomcat的工作原理:

在这里插入图片描述
server:最顶层元素,也就是tomcat服务,一个server可以包含至少一个service,用于具体提供服务
8005:负责关闭tomcat的端口
service分为两个部分:
1、connector:负责接收请求,并提供Socket与Request和Response相关的转化
2、container:用于封装和管理servlet,以及具体处理Request请求
connector分为两个部分:
1、监听端口8080 http1.1:监听来自客户端的请求
2、监听端口8009 ajp:接收其他服务的请求
3、监听端口8443:监听https
例:
http://localhost:8080/kgc/index.jsp
connector的8080端口接收–container----engine处理引擎----虚拟主机----context
context可以有多个,相当于多个目录,多个页面

一个Tomcat中只有一个Server,一个Server可以包含多个Service,一个Service只有一个Container,但是可以有多个Connectors,这是因为一个服务可以有多个连接,如同时提供Http和Https链接,也可以提供向相同协议不同端口的连接,示意图如下(Engine、Host、Context下边会说到):
在这里插入图片描述
多个 Connector 和一个 Container 就形成了一个 Service,有了 Service 就可以对外提供服务了,但是 Service 还要一个生存的环境,必须要有人能够给她生命、掌握其生死大权,那就非 Server 莫属了!所以整个 Tomcat 的生命周期由 Server 控制。
另外,上述的包含关系或者说是父子关系,都可以在tomcat的conf目录下的server.xml配置文件中看出

编写一个自定义的页面

[root@localhost tomcat1]#  ./bin/shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat1
Using CATALINA_HOME:   /usr/local/tomcat1
Using CATALINA_TMPDIR: /usr/local/tomcat1/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat1/bin/bootstrap.jar:/usr/local/tomcat1/bin/tomcat-juli.jar
[root@localhost tomcat1]# cd 
[root@localhost ~]# rm -rf /usr/local/tomcat1

[root@localhost ~]# cd /usr/local/tomcat/
[root@localhost tomcat]# vim conf/server.xml
148       <Host name="localhost"  appBase="webapps"
149             unpackWARs="true" autoDeploy="true">
#添加
150       <Context path="/kgc" docBase="/usr/local/tomcat/webapps/hello"
151             reloadable="false" crossContext="true"/>
#释义:
host name:域名
appbase:站点根目录, java开发的一个web项目 war
unpackwars:是否解压war包,这里开发写好的页面会打成war包
autodeploy:是否自动部署
<Context path="/kgc":    #访问的具体路径
 docBase="/usr/local/tomcat/webapps/hello" :   #具体的目录
reloadeable="false":    #是否自动重启
crossContext="true"/>  : #是否共享会话
[root@localhost tomcat]# mkdir webapps/hello
[root@localhost tomcat]# echo "1111" > webapps/hello/index.jsp
[root@localhost tomcat]# ./bin/shutdown.sh #先关闭
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@localhost tomcat]# ./bin/startup.sh #再启用
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost tomcat]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      59324/java          
tcp6       0      0 ::1:44070               ::1:8080                TIME_WAIT   -                   
[root@localhost tomcat]# curl 192.168.10.30:8080/kgc/index.jsp #访问验证
1111
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

tomcat的默认索引页 index.jsp

[root@localhost tomcat]# cd /usr/local/tomcat/webapps/hello/
[root@localhost hello]# mv index.jsp index1.jsp 
[root@localhost hello]# curl 192.168.10.30:8080/kgc/  #这儿会访问不到,会出现404
<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Message</b> &#47;kgc&#47;</p><p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p><hr class="line" /><h3>Apache Tomcat/8.5.35</h3></body></html>

[root@localhost hello]# curl 192.168.10.30:8080/kgc/index1.jsp
1111

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

目录浏览功能
当访问一个目录,没有默认索引页,会展示出这个目录中所有的页面,前提需要开启目录浏览的功能
必须当前目录下没有默认索引页

[root@localhost ~]# cd /usr/local/tomcat/webapps/hello/
[root@localhost hello]# touch index{2..10}.jsp
[root@localhost hello]# ls
index10.jsp  index2.jsp  index4.jsp  index6.jsp  index8.jsp
index1.jsp   index3.jsp  index5.jsp  index7.jsp  index9.jsp
[root@localhost hello]# vim /usr/local/tomcat/conf/web.xml
111             <param-name>listings</param-name>
 112             <param-value>true</param-value>  #开启目录浏览功能
 
[root@localhost hello]# /usr/local/tomcat/bin/shutdown.sh  #先关闭
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

[root@localhost hello]# /usr/local/tomcat/bin/startup.sh #再启用
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost hello]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      59567/java          
tcp6       0      0 192.168.10.30:8080      192.168.10.1:60129      ESTABLISHED 59567/java          
tcp6       0      0 192.168.10.30:8080      192.168.10.1:60128      FIN_WAIT2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

访问http://192.168.10.30:8080/kgc/进行验证查看
在这里插入图片描述
修改默认索引页

[root@localhost hello]# vim /usr/local/tomcat/conf/web.xml 
4696         <welcome-file>aa.jsp</welcome-file>
[root@localhost hello]# /usr/local/tomcat/bin/shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@localhost hello]# /usr/local/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost hello]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      59873/java          
tcp6       0      0 ::1:44088               ::1:8080                TIME_WAIT   -                   
[root@localhost hello]# echo aa > aa.jsp
[root@localhost hello]# ls
aa.jsp       index1.jsp  index3.jsp  index5.jsp  index7.jsp  index9.jsp
index10.jsp  index2.jsp  index4.jsp  index6.jsp  index8.jsp
[root@localhost hello]# curl 192.168.10.30:8080/kgc/
aa
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

这个实验做完之后再把刚刚改的配置更改回来,以便于后面接着使用

jvm内存监控页面
jvm(java vritual machine)java的虚拟主机

[root@localhost hello]# vim meminfo.jsp
#添加
<%
Runtime rtm = Runtime.getRuntime();
long mm = rtm.maxMemory()/1024/1024;
long fm = rtm.freeMemory()/1024/1024;
long tm = rtm.totalMemory()/1024/1024;
out.println("JVM memory info:<br>");
out.println("Max memory:"+mm+"MB"+"<br>");
out.println("Free memory:"+fm+"MB"+"<br>");
out.println("Total memory:"+tm+"MB"+"<br>");
out.println("Available memory can be used:"+(mm+fm-tm)+"MB"+"<br>");
%>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

访问http://192.168.10.30:8080/kgc/meminfo.jsp进行验证
在这里插入图片描述
jvm的内存分配方式:
堆内存和栈内存

堆内存的方式: jvm最大占用235M,但是tomcat不会使用全部,会先申请一块空间25M,然后使用了21M,剩余4M,所以tomcat还可以使用
mm-(tm-fm)也就是mm+fm-tm所得到的214M
jvm的堆内存分配是先分配一小块,然后在使用
堆内存是现在的jvm的分配方式

栈内存: 使用多少占用多少,现在不常用

JVM远程调用(jvm远程监控)

实验:

主机ip
tomcat192.168.10.30
远程监控192.168.10.40

tomcat主机:

[root@localhost ~]# cd /usr/local/tomcat/
[root@localhost tomcat]# vim bin/catalina.sh
307 CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.10.30 #jmx监控的主机(本机)
308 -Dcom.sun.management.jmxremote #开启远程监控
309 -Dcom.sun.management.jmxremote.port=8080 #监控的端口
310 -Dcom.sun.management.jmxremote.ssl=false #不使用https
311 -Dcom.sun.management.jmxremote.authenticate" #认证登录

[root@localhost tomcat]# cd /usr/local/java/jre/lib/management/
[root@localhost management]# cp jmxremote.password.template jmxremote.password
[root@localhost management]# vim jmxremote.password
62 monitorRole  123456
 63 controlRole  123456
 [root@localhost management]# chmod 600 jmxremote.*
 
[root@localhost management]# /usr/local/tomcat/bin/shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

[root@localhost management]# /usr/local/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost management]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      61598/java          
tcp6       0      0 ::1:44102               ::1:8080                TIME_WAIT   -        
[root@localhost bin]# systemctl stop firewalld
[root@localhost bin]# setenforce 0  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

远程主机:验证

[root@localhost ~]# jconsole  #执行完后会弹出以下窗口
  • 1

在这里插入图片描述
在这里插入图片描述
看到这儿就证明监控部署成功
在这里插入图片描述

tomcat的管理平台

tomcat的应用管理平台:
用于部署页面,tomcat本身自带的一个管理平台

[root@localhost management]# cd /usr/local/tomcat/
[root@localhost tomcat]# cd webapps/
[root@localhost webapps]# ls
docs  examples  hello  host-manager  manager  ROOT
[root@localhost webapps]# cd manager/
[root@localhost manager]# vim /usr/local/tomcat/bin/catalina.sh
#将307-311注释
307 #CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.10.30
308 #-Dcom.sun.management.jmxremote
309 #-Dcom.sun.management.jmxremote.port=8080
310 #-Dcom.sun.management.jmxremote.ssl=false
311 #-Dcom.sun.management.jmxremote.authenticate"

[root@localhost manager]# cd /usr/local/tomcat/
[root@localhost tomcat]# vim webapps/manager/META-INF/context.xml
#修改
20          allow="192.168.10.*" /> #允许这个网段
[root@localhost tomcat]# vim conf/tomcat-users.xml 
#在倒数第二行添加以下内容
44   <role rolename="manager-gui"/>
45   <role rolename="manager-script"/>
46   <user username="manager" password="123456" roles="manager-gui"/>
47   <user username="managerscript" password="123456" roles="manager-script"/>

[root@localhost tomcat]# /usr/local/tomcat/bin/shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@localhost tomcat]# /usr/local/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost tomcat]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      62671/java          
tcp6       0      0 ::1:44118               ::1:8080                TIME_WAIT   -            
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

访问192.168.10.30:8080/manager/html验证
在这里插入图片描述
在这里插入图片描述

第一种:部署使用图形界面 部署页面
在这里插入图片描述
访问验证
在这里插入图片描述
把这个使用图形界面部署的web项目删除掉
在这里插入图片描述
第二种:使用命令

[root@localhost ~]# cp bdqnweb.war /usr/local/tomcat/webapps/
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
[root@localhost ~]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      63351/java          
[root@localhost ~]# curl 192.168.10.30:8080/bdqnweb/
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

第三种:命令来部署war项目

[root@localhost ~]# rm -rf /usr/local/tomcat/webapps/bdqnweb*
[root@localhost ~]# unzip bdqnweb.war -d /usr/local/tomcat/webapps/bdqnweb
Archive:  bdqnweb.war
   creating: /usr/local/tomcat/webapps/bdqnweb/META-INF/
  inflating: /usr/local/tomcat/webapps/bdqnweb/META-INF/MANIFEST.MF  
   creating: /usr/local/tomcat/webapps/bdqnweb/WEB-INF/
   creating: /usr/local/tomcat/webapps/bdqnweb/WEB-INF/classes/
  inflating: /usr/local/tomcat/webapps/bdqnweb/WEB-INF/web.xml  
  inflating: /usr/local/tomcat/webapps/bdqnweb/index.jsp  
   creating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/
   creating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/cn.bdqn.bdqnweb/
   creating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/cn.bdqn.bdqnweb/bdqnweb/
  inflating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/cn.bdqn.bdqnweb/bdqnweb/pom.xml  
  inflating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/cn.bdqn.bdqnweb/bdqnweb/pom.properties
 
[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# ls
bdqnweb docs  examples  hello  host-manager  manager  ROOT
[root@localhost webapps]# curl 192.168.10.30:8080/bdqnweb/
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

tomcat的主机管理平台: 可以制作虚拟主机

[root@localhost ~]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml
20          allow="192.168.10.*" />
[root@localhost ~]# vim /usr/local/tomcat/conf/tomcat-users.xml
 49   <role rolename="admin-gui"/>
 50   <role rolename="admin-script"/>
 51   <user username="admin" password="123456" roles="admin-gui"/>
 52   <user username="adminscript" password="123456" roles="admin-script"/>
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh 
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

访问http://192.168.10.30:8080/host-manager/html验证
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# ls
aaa  bdqnweb    docs  examples  hello  host-manager  manager  ROOT
[root@localhost webapps]# cd aaa/
[root@localhost aaa]# echo AAAAAA > index.jsp
[root@localhost aaa]# vim /etc/hosts
#添加
192.168.10.30 www.kgc.com
[root@localhost aaa]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost aaa]# /usr/local/tomcat/bin/startup.sh
[root@localhost aaa]# curl www.kgc.com:8080/aaa/index.jsp
AAAAAA

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

tomcat的优化

tomcat的一个加固,用于安全方面

1、服务器的端口改为非8080端口

2、禁用目录浏览功能

3、在生产环境中,要禁用应用管理平台和主机管理平台

4、隐藏服务版本的信息
在这里插入图片描述
没有找到对应的页面时,会显示版本的信息,可以隐藏版本信息

[root@localhost ~]# vim /usr/local/tomcat/conf/web.xml
23 <error-page>
  24    <error-code>404</error-code>
  25    <location>/notfound.jsp</location>
  26 </error-page>
[root@localhost ~]# cd /usr/local/tomcat/webapps/hello/
[root@localhost hello]# echo "page no found" > notfound.jsp
[root@localhost hello]# /usr/local/tomcat/bin/shutdown.sh 
[root@localhost hello]# /usr/local/tomcat/bin/startup.sh
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

当再次访问不存在的页面时,将不会出现版本信息
在这里插入图片描述

5、脚本权限收回,防止爆破

chmod -R 700 /usr/local/tomcat/bin/*
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值