hopeless-dream

导航

tomcat安装及目录结构说明

 Tomcat简介

Tomcat最初是由Sun公司架构师James Duncan Davidson开发,名为"JavaWebServer",作为Servlet容器的参考实现。1999年,该项目与Apache软件基金会下的JServ项目合并,就是现在的Tomcat。

Tomcat项目发展至今,已经是一款成熟的Servlet容器,并且作为JBoss等应用服务器产品内嵌的Servlet容器。

Tomcat各个版本的要求

版本(更新) 6.x(6.0.47) 7.x(7.0.72) 8.x(8.0.38) 8.x(8.5.6) 9.x(9.0.0.M11)
Servlet 2.5 3.0 3.1 3.1 4.0
JDK ≥5.0 ≥6.0 ≥7.0 ≥7.0 ≥8.0
JSP 2.1 2.2 2.3 2.3 2.3
EL 2.1 2.2 3.0 3.0 3.0
WebSocket N/A 1.1 1.1 1.1 1.1

Tomcat新特性

8.0版本以后,默认的HTTP、AJP链接器为NIO(Tomcat 7之前的版本使用BIO),8.5版本以后移除了BIO。

8.0版本以后,链接器新增支持 JDK 7 的NIO2和HTTP/2协议。

默认采用了异步日志处理

Tomcat安装过程

获取安装包

下载地址:https://tomcat.apache.org/download-80.cgi

历史版本可以从如下链接获取:https://archive.apache.org/dist/tomcat/tomcat-8/安装版本/bin

这里安装8.5.6版本,该版本是中间版本,是为了弃用8.0并且兼容9.0的新特性

安装jdk

$ mkdir packages
$ mkdir softwares

[test@localhost packages]$ ll
total 206636
-rw-r--r--. 1 test test   9304958 Jun  1  2021 apache-tomcat-8.5.6.tar.gz
-rw-r--r--. 1 test test 191753373 Dec 16  2018 jdk-8u191-linux-x64.tar.gz


$ tar xfz jdk-8u191-linux-x64.tar.gz -C ../softwares/

## 修改环境变量

$ sed -i.ori '$a export JAVA_HOME=/home/test/softwares/jdk1.8.0_191\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' ~/.bash_profile

$ . ~/.bash_profile

## 验证
$ java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

安装tomcat

$ tar xfz apache-tomcat-8.5.6.tar.gz -C ../softwares/

## 修改环境变量
$ sed -ri.bak -e '/JAVA_HOME=/a export $CATALINA_HOME=/home/test/softwares/apache-tomcat-8.5.6' -e '/export PATH=/s@(.*)@\1:$CATALINA_HOME/bin@' ~/.bash_profile

$ . ~/.bash_profile

 启动tomcat

1、使用自带的脚本启动

$ $CATALINA_HOME/bin/startup.sh

2、Debug启动

该方式主要依赖于JDK提供的JPDA(Java Platform Debugger Architecture,Java平台调试体系结构)。用于生成环境部署的应用调试,解决在开发环境无法复现的BUG

$ catalina.sh jpda start

启动后,会在日志中输出如下信息:

Listening for transport dt_socket at address: 8000

3、通过unit单元文件(systemctl)管理

[root@tomcat ~]# vim /usr/lib/systemd/system/tomcat.service 
[unit]
Description=Tomcat server
After=syslog.target network.target
[Service]
Type=forking          ##用notify会卡住
User=test
Group=test
PIDFile=/home/test/softwares/apache-tomcat-8.5.6/tomcat.pid
Environment="JAVA_HOME=/home/test/softwares/jdk1.8.0_191"
ExecStart=/home/test/softwares/apache-tomcat-8.5.6/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

注意:这是普通用户,要配置sudo权限的

tomcat目录结构

文件名 说明
bin 提供各平台Tomcat启停的脚本
bin/{shutdown.bat,
shutdown.sh}
windows和Linux下的停止脚本
bin/{startup.bat,
startup.sh}
windows和Linux下的启动脚本
conf 存放Tomcat配置文件
conf/Catalina 存放每个虚拟机的Context配置
conf/context.xml 定义所有Web应用需要加载的Context配置,如果Web应用中指定了context.xml
,那么该文件的配置将被覆盖
conf/catalina.properties Tomcat环境变量配置
conf/catalina.policy 处于安全模式下运行的Tomcat,此文件为默认的安全策略配置文件
conf/logging.properties Tomcat日志配置文件,用于定义Tomcat日志级别和日志路径
conf/server.xml Tomcat核心配置文件
conf/tomcat-user.xml 定义Tomcat默认用户及角色映射信息,
Tomcat的Manager模块应用该文件中定义的用户进行安全认证
conf/web.xml Tomcat所有应用默认的部署描述文件,定义了基础Servlet和MIME映射,
lib Tomcat运行环境依赖的jar包
logs Tomcat默认的日志路径
webapps Tomcat默认的Web应用部署目录
work

Web应用JSP代码生成和编译临时目录

.jsp文件在Tomact加载的工作原理:

当浏览器访问某个jsp页面时,tomcat会在work目录里把这个jsp页面转成.java文件,比如将index.jsp转换成index_jsp.java文件,
而后编译为index_jsp.class文件,最后tomcat容器通过ClassLoader类把这个index_jsp.class类装载入内存,进行响应客户端的工作。 tomcat会定时扫描容器内的jsp文件,读取每个文件的属性。
当发现某个jsp文件发生改变时(文件的最后修改时间与上次扫描时不相同时),tomcat会重新转换、编译这个jsp文件。但是tomcat的扫描是定时的不是实时的,这也正是为什么jsp文件修改后需要几分钟的时间来等修改过的jsp生效。 当然为了即刻生效,建议在修改jsp页面后立即清除work目录里的文件。

posted on 2020-09-03 12:31  hopeless-dream  阅读(296)  评论(0编辑  收藏  举报