千家信息网

浅谈Tomcat安装

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,博文结构tomcat介绍Tomcat组件及其特点安装Tomcat自定义目录开启JMX远程调试功能使用https访问tomcat服务器一.Tomcatl介绍Tomcat是apache软件基金会项目中的一
千家信息网最后更新 2025年12月01日浅谈Tomcat安装

博文结构
tomcat介绍
Tomcat组件及其特点
安装Tomcat
自定义目录
开启JMX远程调试功能
使用https访问tomcat服务器

一.Tomcatl介绍

Tomcat是apache软件基金会项目中的一个核心项目,有apache和sun其他一些公司及个人共同开发而成的Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是多的场合下被普遍使用,是开发和调试jsp程序的首选。
可以这样认为,当一台服务器配置好apache服务器以后,可以利用apache服务器来响应我们的html页面的访问请求,而tomcat是 apahce 服务器的扩展,当你运行tomcat的时候实际上是作为一个apache独立的进程单独运行的,apache服务器为html页面提供服务的,而tomcat是运行jsp页面和servlet,另外tomcat也能具有处理html页面的功能,但是处理静态的能力没有apache处理好。

二.Tomcat组件及其特点

  • tomcat组件

servlet(应用程序或者容器)是java提供的用于开发web服务器应用程序的一个组件,运行在服务器端,有servlet用于生成动态页面内容,servlet是平台立的java类,编写一个servlet,实际上就是安装servlet规范编写一个java类

  • 什么是servlet ?

Tomcat 处理请求和响应的过程是由servlet的程序来完成的,并且servlet是为例解决实现动态页面而衍生的东西,与我们之前了解的nginx或者apache想要实现动态页面需要和php服务器沟通的过程差不多,可以把servlet比作成php

Tomcat 是web应用服务器,是一个servlet/jsp容器,tomcat作为servlet容器,负责处理客户请求,并将servlet的响应传送给客户,而servlet是一种运行在java语言的服务器上的组件,servlet最常见的用途是扩展java web服务器功能,提供非常安全的,可以移植的(打包网页代码就可以在另外一个环境中运行,如linux系统跟windows环境),易于使用cgi替代品。

  • Tomcat处理数据的流程

1、浏览器发送请求数据
2、tomcat收到服务器的请求数据,由servlet容器处理并进行解析,并且把客户端的数据请求request改变成servlet request 交给后端的servlet 实例(或者或叫对象)实例收到客户端的请求数据的请求对象,进行出处理客户端的请求,处理完成后将数据响应给servlet容器,响应给servlet容器叫做servlet response。
3、Servlet收到的实例的响应数据交给客户端(如图)

Servlet(tomcat)容器与servlet实例需要通过java servlet api接口进行通信,api接口是由开发人员在写代码的时候定义或者编写的
4.servlet容器将收到的响应数据交给客户端

  • Servlet和jsp的区别

Servlet在Java代码中可以通过HttpServletResponse对象动态输出HTML内容;

JSP在静态HTML内容中嵌入Java代码,然后Java代码在被动态执行后生成HTML页面;

  • tomcat的特点

运行时占用的资源小,扩展性好,支持负载均衡和邮件服务器等开发应用系统常用的功能

三.安装tomcat

下载Tomcat所需的软件包

  • 安装Tomcat需要系统Java环境1.8版本以上,Centos 7默认就已经支持Java环境1.8版本,由于现在大部分使用还是Centos 6的系统,,由于本人采用的Centos 7系统,所以首先需要卸载JDK环境。
[root@localhost ~]# rpm -qa | grep jdk  \\查询已安装的jdk包copy-jdk-configs-1.2-1.el7.noarchjava-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64[root@localhost ~]# rpm -e java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64  java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 --nodeps\\卸载系统自带的jdk环境[root@localhost ~]# tar zxf jdk-8u211-linux-x64.tar.gz -C /usr/local/[root@localhost ~]# vim /etc/profile//编写系统环境变量,在最后一行加以下内容export  JAVA_HOME=/usr/local/jdk1.8.0_211              //指定java的路径export  JRE_HOME=/usr/local/jdk1.8.0_211/jre           //java运行环境export  CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar                                                                                    //声明java中的类,类就是一类事务的属性,如各种盖饭最终他们的属性是饭export  PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH                                                                                    //将定义的变量添加到系统环境变量中[root@localhost ~]# source /etc/profile                        //重新加载系统环境变量文件[root@localhost ~]# tar zxf apache-tomcat-8.5.35.tar.gz [root@localhost ~]# mv apache-tomcat-8.5.35 /usr/local/tomcat[root@localhost ~]# /usr/local/tomcat/bin/startup.sh  \\启动tomcatUsing CATALINA_BASE:   /usr/local/tomcatUsing CATALINA_HOME:   /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME:        /usr/local/jdk1.8.0_211/jreUsing CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jarTomcat started.[root@localhost ~]# netstat -anpt | grep 8080tcp6       0      0 :::8080                 :::*                    LISTEN      16320/java      
  • 现在可以用客户端访问测试

  • Tomcat目录说明
    [root@localhost ~]# ls /usr/local/tomcat/
    bin conf lib logs README.md RUNNING.txt webapps
    BUILDING.txt CONTRIBUTING.md LICENSE NOTICE RELEASE-NOTES temp work
Bin:存放windows或linux平台上启动或者关闭tomcat的脚本文件Conf:存放tomcat服务器的全局配置文件,其中最重要的是server.xml和web.xmlLib:tomcat运行需要的库文件(jars)Logs:tomcat运行时产生的日志文件Temp:临时文件存放目录Work:tomcat的工作目录,存放tomcat运行时的编译配置文件Webapps:网页文件存放路径Tomcat常用配置文件说明Server.xml:tomcat的主配置文件,可以设置端口号,设置域名或者IPWeb.xml: 缺省的web app配置(也可以理解为是实现主配置文件没有定义到的功能:如目录遍历,定义错误页面类型)Tomcat-users.xml:用来配置管理tomcat的用户与权限
  • tomcat中server.xml文件结构

Server:代表整个容器,实例的顶层元素,一个配置文件中只能有一个server元素,可以包含多个service。比如:

//表示关闭Tomcat,使用telnet连接8005,输入shutdown指令

Service:提供完整jvm的独立组件,jvm表示Java虚拟机,是一个虚构出来的虚拟机,可以包含一个engine包含多个connector;

  //代表接受所有tomcat接受的请求,如果是Service name="apache"则表示接受所有apache转发过来的请求

Connector:接口定义,负责接受客户端的请求,以及向客户端返回响应的结构;

//port:接受数据的端口;protocol:设置http协议;//Connection Timeout:与客户端的连接超时时间,-1代表不限制客户端的连接时间;//Redirectport :当客户端请求是https将请求转发到8443去

Engine:处理客户端的请求,可以包含多个hots;

//name:是引擎名称,处理客户的请求默认去寻找localhost
Host:定义的虚拟主机,为特定的虚拟主机处理所有的客户端请求;

  

Context:运行在虚拟主机中的单个web应用;

  • Tomcat处理http请求过程

过程

①用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得;②Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应;③Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host;④Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为" "的Context去处理);⑥path="/test"的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类;⑥构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序;⑦Context把执行完之后的HttpServletResponse对象返回给Host;⑧Host把HttpServletResponse对象返回给Engine;⑨Engine把HttpServletResponse对象返回Connector;⑩Connector把HttpServletResponse对象返回给客户Browser;

四.自定义目录

[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml \\在zhe这个Hostname下添加以下内容             
  • 相关解释
Path:指出访问的路径docBase:指定存放的路径Debug:指定debug的等级为0输出信息最少,9提供最多信息Reloadable:为ture时当web.xml文件有改动的时候自动重新加载,不用重启服务CorssContext:为ture时表示不同的context共享一个session(会话池)
[root@localhost ~]# mkdir -p /data/project[root@localhost ~]# vim /data/project/index1.jspaaaaaaa[root@localhost ~]# vim /data/project/index2.jspbbbbbbb
  • 开启tomcat目录遍历
[root@localhost ~]# vim /usr/local/tomcat/conf/web.xml\\大约在112行中把false改为true

  • 重启服务
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh   \\关闭服务Using CATALINA_BASE:   /usr/local/tomcatUsing CATALINA_HOME:   /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME:        /usr/local/jdk1.8.0_211/jreUsing CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar[root@localhost ~]# /usr/local/tomcat/bin/startup.sh        \\启动服务Using CATALINA_BASE:   /usr/local/tomcatUsing CATALINA_HOME:   /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME:        /usr/local/jdk1.8.0_211/jreUsing CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jarTomcat started.
  • 客户端访问验证

五.自定义监控页面

[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml //在host中添加 

[root@localhost /]# mkdir /jk/jiankong -p[root@localhost /]# vim /jk/jiankong/index.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 :
");out.println("Max memory:"+mm+"MB"+"
");out.println("Total memory: "+tm+"MB"+"
");out.println("Free memory: "+fm+"MB"+"
");out.println("Available memmory can be used is :"+(mm+fm-tm)+"MB"+"
"); %>[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh [root@localhost ~]# /usr/local/tomcat/bin/startup.sh //重启tomcat服务
  • 访问如下

六.开启JMX远程调试功能

[root@localhost /]# vim /usr/local/tomcat/bin/catalina.sh #----- Execute The Requested Command -----------------------------------------        //填写的内容必须在这行下面大约在309行CATALINA_OPTS=" $CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"[root@localhost /]# cd /usr/local/jdk1.8.0_211/jre/lib/management/[root@localhost management]# cp jmxremote.password.template jmxremote.password[root@localhost management]# vim jmxremote.password  //在最后一行添加,定义用户为xws,密码为123456,使用"wq!"强制保存退出xws     123456[root@localhost management]# vim jmxremote.access  //定义用户权限的文件xws   readwrite \                                       //在倒数第三行。把原有的用户改为xws[root@localhost management]# chmod 600 jmxremote.access [root@localhost management]# chmod 600 jmxremote.password[root@localhost management]# /usr/local/tomcat/bin/shutdown.sh[root@localhost management]# /usr/local/tomcat/bin/startup.sh [root@localhost ~]# netstat -anpt | grep 8888tcp6       0      0 :::8888                 :::*                    LISTEN      58760/java   //确认刚才定义的端口8888在监听
  • 由于其为图像化界面,所以需要在桌面环境下执行以下命令
[root@localhost /]# . /etc/profile\\更新环境变量[root@localhost /]# jconsole

七.配置使用https访问tomcat服务器

[root@localhost /]# keytool -genkey -v -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/conf/tomcat.keystore -validity 36500//alias:别名,这里设置为tomcat;//keyalg:证书算法,RSA;//validity:证书有效期,单位为天//keystore:指定证书存放路径,可以自定义输入密钥库口令:  再次输入新口令: 您的名字与姓氏是什么?  [Unknown]:  xws您的组织单位名称是什么?  [Unknown]:  aaa您的组织名称是什么?  [Unknown]:  bbb您所在的城市或区域名称是什么?  [Unknown]:  ccc您所在的省/市/自治区名称是什么?  [Unknown]:  wwwe该单位的双字母国家/地区代码是什么?  [Unknown]:  qweCN=xws, OU=aaa, O=bbb, L=ccc, ST=wwwe, C=qwe是否正确?  [否]:  y正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 36,500 天):     CN=xws, OU=aaa, O=bbb, L=ccc, ST=wwwe, C=qwe输入  的密钥口令    (如果和密钥库口令相同, 按回车):  [正在存储/usr/local/tomcat/conf/tomcat.keystore]Warning:JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore /usr/local/tomcat/conf/tomcat.keystore -destkeystore /usr/local/tomcat/conf/tomcat.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml   //可以添加也可以从原有的内容稍作修改即可                       //指定生成证书所输入的密码     [root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh [root@localhost ~]# /usr/local/tomcat/bin/startup.sh      
  • 访问如下:

服务 服务器 客户 处理 文件 环境 运行 对象 数据 系统 页面 配置 容器 内容 端的 客户端 目录 路径 应用 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 专升本考试数据库历年真题 网络安全等级保护初级测评师考试 联想服务器怎么恢复阵列 网易服务器bug大全 计算机网络技术相关知识扩展 网络安全教育公益讲座安道新 互联网公司服务器安全隐患 青岛智路软件开发有限公司 网络技术发展4个阶段 软件开发交付 蓟州区项目网络技术不二之选 一流的管理 一流的服务器 职教云网络技术好不好 服务器管理 php 00后都用什么交友软件开发 网络安全法英语怎么说 有人打电话说他是网络技术 计算机软件开发找工作容易吗 数据库保存有本地用户 软件开发与软件实施的区别 软件开发工程师面试算法题 网络技术与制度 计算机网络技术基础考试试卷 梧州网络安全朝阳行业 mc服务器主城重生点生成指令 2021年10月网络安全会议 方舟生存进化服务器管理器 信息网络技术怎么样 数据库创建非聚集唯一值索引 个人软件开发商
0