温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Tomcat的安装和配置

发布时间:2020-06-10 12:36:28 来源:亿速云 阅读:255 作者:元一 栏目:系统运维

一.Tomcatl介绍

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器

二.Tomcat组件及其特点

  • tomcat组件

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

  • 什么是servlet ?

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

Tomcat的安装和配置

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

  • Tomcat处理数据的流程
  • 1.Tomcat是运行在JVM中的一个进程。它定义为【中间件】,顾名思义,是一个在Java项目与JVM之间的中间容器。

  • 2.Web项目的本质,是一大堆的资源文件和方法。Web项目没有入口方法(main方法),,意味着Web项目中的方法不会自动运行起来。

  • 3.Web项目部署进Tomcat的webapp中的目的是很明确的,那就是希望Tomcat去调用

  • 写好的方法去为客户端返回需要的资源和数据。

  • 4. Tomcat可以运行起来,并调用写好的方法。那么,Tomcat一定有一个main方法。

  • 5. 对于Tomcat而言,它并不知道我们会有什么样的方法,这些都只是在项目被部署进webapp下后才确定的,由此分析,必然用到了Java的反射来实现类的动态加载、实例化、获取方法、调用方法。但是我们部署到Tomcat的中的Web项目必须是按照规定好的接口来进行编写,以便进行调用

  • 6.Tomcat如何确定调用什么方法呢。这取却于客户端的请求,http://127.0.0.1:8080/JayKing.Tomcat.Study/index.java?show这样的一个请求,通过http协议,在浏览器发往本机的8080端口,携带的参数show方法,包含此方法的路径为JayKing.Tomcat.Study,文件名为:index.java。

1、浏览器发送请求数据
2、tomcat收到服务器的请求数据,由servlet容器处理并进行解析,并且把客户端的数据请求request改变成servlet request 交给后端的servlet 实例(或者或叫对象)实例收到客户端的请求数据的请求对象,进行出处理客户端的请求,处理完成后将数据响应给servlet容器,响应给servlet容器叫做servlet response。
3、Servlet收到的实例的响应数据交给客户端(如图)
Tomcat的安装和配置
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.noarch
java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
java-1.8.0-openjdk-1.8.0.102-4.b14.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
[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  \\启动tomcat
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_211/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost ~]# netstat -anpt | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      16320/java      
  • 现在可以用客户端访问测试

Tomcat的安装和配置

  • 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.xml
Lib:tomcat运行需要的库文件(jars)
Logs:tomcat运行时产生的日志文件
Temp:临时文件存放目录
Work:tomcat的工作目录,存放tomcat运行时的编译配置文件
Webapps:网页文件存放路径
Tomcat常用配置文件说明
Server.xml:tomcat的主配置文件,可以设置端口号,设置域名或者IP
Web.xml: 缺省的web app配置(也可以理解为是实现主配置文件没有定义到的功能:如目录遍历,定义错误页面类型)
Tomcat-users.xml:用来配置管理tomcat的用户与权限
  • tomcat中server.xml文件结构

Tomcat的安装和配置

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

<Server port="8005" shutdown="SHUTDOWN">
//表示关闭Tomcat,使用telnet连接8005,输入shutdown指令

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

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

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

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

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

<Engine name="Catalina" defaultHost="localhost">

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

  <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">

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

  • Tomcat处理http请求过程

Tomcat的安装和配置

过程

①用户点击网页内容,请求被发送到本机端口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 
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
\\在zhe这个Hostname下添加以下内容
<Context path = "/xws" docBase = "/data/project" debug = "0" reloadable  = "false" crossContext = "true">     
        </Context>
  • 相关解释
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.jsp
aaaaaaa
[root@localhost ~]# vim /data/project/index2.jsp
bbbbbbb
  • 开启tomcat目录遍历
[root@localhost ~]# vim /usr/local/tomcat/conf/web.xml
\\大约在112行中把false改为true

Tomcat的安装和配置

  • 重启服务
[root@localhost ~]# /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/jdk1.8.0_211/jre
Using 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/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_211/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
  • 客户端访问验证

Tomcat的安装和配置

Tomcat的安装和配置

五.自定义监控页面

[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml 
//在host中添加
 <Context path="/jiankong" docBase="/jk/jiankong" debug="0" reloadable="    false" crossContext="true"/>

Tomcat的安装和配置

[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 :<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>");
    %>
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh 
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh                  //重启tomcat服务
  • 访问如下

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 8888
tcp6       0      0 :::8888                 :::*                    LISTEN      58760/java   
//确认刚才定义的端口8888在监听
  • 由于其为图像化界面,所以需要在桌面环境下执行以下命令
[root@localhost /]# . /etc/profile
\\更新环境变量
[root@localhost /]# jconsole

Tomcat的安装和配置

Tomcat的安装和配置

Tomcat的安装和配置

七.配置使用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]:  qwe
CN=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
输入 <tomcat> 的密钥口令
    (如果和密钥库口令相同, 按回车):  
[正在存储/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   //可以添加也可以从原有的内容稍作修改即可
 <Connector port="443"   protocol="org.apache.coyote.http11.Http11NioProtocol"                   //将原本的8443改为443
               maxThreads="150" SSLEnabled="true"
                keystoreFile="/usr/local/tomcat/conf/tomcat.keystore"                   //指定证书存放路径
               keystorePass="123456">                      //指定生成证书所输入的密码
     </Connector>

[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh 
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh      
  • 访问如下:

Tomcat的安装和配置


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI