文章目录
1. Tomcat 安装
1.1 yum安装
可以使用CentOS7 yum源自带的安装。yum源中是Tomcat 7.0版本。安装完通过浏览器可以观察一下首页
#貌似CentOS8 现在还不可以
# yum install tomcat tomcat-admin-webapps tomcat-webapps
# systemctl start tomcat.service
# ss -tanl
[root@tomcat1 local]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:3306 *:*
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 127.0.0.1:6010 *:*
LISTEN 0 128 127.0.0.1:6011 *:*
LISTEN 0 100 :::8009 :::*
LISTEN 0 128 :::111 :::*
LISTEN 0 100 :::8080 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 ::1:631 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 ::1:6010 :::*
LISTEN 0 128 ::1:6011 :::*
LISTEN 0 1 ::ffff:127.0.0.1:8005 :::*
1.2 采用Apache官网下载 官方二进制版
# tar xf apache-tomcat-8.5.42.tar.gz -C /usr/local
# cd /usr/local
# ln -sv apache-tomcat-8.5.42/ tomcat
"tomcat" -> "apache-tomcat-8.5.42/"
# cd tomcat
# cd bin
# ./catalina.sh --help
# ./catalina.sh version
# ./catalina.sh start #./catalina.sh 可以启动停止tomcat服务
# ss -tanlp
# ./catalina.sh stop
# ./startup.sh #启动脚本
# ./shutdown.sh #关闭脚本
# 启动身份是root
1. useradd -r tomcat #建立系统账号
2. chown -R tomcat.tomcat /usr/local/tomcat
3. su - tomcat -c '/usr/local/tomcat/bin/catalina.sh start' # tomcat conf/server.xml中配置内容填写错误 启动时会报错
4. ps -aux | grep tomcat
1.2.1 目录结构
目录 | 说明 |
---|---|
bin | 服务启动、停止等相关 |
conf | 配置文件 |
lib | 库目录 |
logs | 日志文件 |
webapps | 应用程序/应用部署目录 |
work | jsp编译后的结果文件 |
1.2.2 配置文件
文件名 | 说明 |
---|---|
server.xml | 主配置文件 |
context.xml | 每个webapp都可以专用的配置文件,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认配置 |
web.xml | 每个webapp只有“部署”后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认部署相关的配置 |
tomcat-users.xml | 用户认证的账号和密码文件 |
catalina.policy | 当使用-security选项启动tomcat时,用于为tomcat设置安全策略 |
catalina.properties | Java属性的定义文件,用于设定类加载器路径,以及一些与JVM调优相关参数 |
logging.properties | 日志系统相关的配置。log4j |
1.2.3 组件分类
- 顶级组件
Server,代表整个Tomcat容器 - 服务类组件
Service,组织Engine和Connector,里面只能包含一个Engine - 连接器组件
Connector,有HTTP、HTTPS、AJP协议的连接器 - 容器类
Engine、Host、Context都是容器类组件,可以嵌入其它组件,内部配置如何运行应用程序。 - 内嵌类
可以内嵌到其他组件内,valve、logger、realm、loader、manager等。以logger举例,在不同容器组件内定义。 - 集群类组件
listener、cluster
上述组件构成了tomcat,如下图
—> 图片截取于马哥教育许老师课件
名称 | 说明 |
---|---|
Server | Tomcat运行的进程实例 |
Connector | 负责客户端的HTTP、HTTPS、AJP等协议的连接。一个Connector只属于某一个Engine |
Service | 用来组织Engine和Connector的关系 |
Engine | 响应并处理用户请求。一个引擎上可以绑定多个Connector |
Host | 虚拟主机 |
Context | 应用的上下文,配置路径映射path => directory |
AJP(Apache Jserv protocol)是一种基于TCP的二进制通讯协议。
核心组件
- Tomcat启动一个Server进程。可以启动多个Server,但一般只启动一个
- 创建一个Service提供服务。可以创建多个Service,但一般也只创建一个
- 每个Service中,是Engine和其连接器Connector的关联配置
- 可以为这个Server提供多个连接器Connector,这些Connector使用了不同的协议,绑定了不同的端口。其作用就是处理来自客户端的不同的连接请求或响应
- Service内部还定义了Engine,引擎才是真正的处理请求的入口,其内部定义多个虚拟主机Host
- Engine对请求头做了分析,将请求发送给相应的虚拟主机
- 如果没有匹配,数据就发往Engine上的defaultHost缺省虚拟主机
- Engine上的缺省虚拟主机可以修改
- Host定义虚拟主机,虚拟主机有name名称,通过名称匹配
- Context定义应用程序单独的路径映射和配置
2. 应用部署
2.1 Tomcat
- Tomcat中默认网站根目录是CATALINA_BASE/webapps/
- 在Tomcat的webapps目录中,有个非常特殊的目录ROOT,它就是网站默认根目录。
- 将eshop解压后的文件放到这个ROOT中。
- bbs解压后文件都放在CATALINA_BASE/webapps/bbs目录下。
- 每一个虚拟主机的目录都可以使用appBase配置自己的站点目录,里面都可以使用ROOT目录作为主站目录
2.1.1 JSP WebApp目录结构
- 主页配置:一般指定为index.jsp或index.html
- WEB-INF/:当前WebApp的私有资源路径,通常存储当前应用使用的web.xml和context.xml配置文件
- META-INF/:类似于WEB-INF
- classes/:类文件,当前webapp需要的类
- lib/:当前应用依赖的jar包
2.1.2webapp归档格式
- .war:WebApp打包
- .jar:EJB类打包文件
- .rar:资源适配器类打包文件
- .ear:企业级WebApp打包
传统应用开发测试后,通常打包为war格式,这种文件部署到了Tomcat的webapps下,还可以自动展开。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
2.2 部署Deploy
部署:将webapp的源文件放置到目标目录,通过web.xml和context.xml文件中配置的路径就可以访问该webapp,通过类加载器加载其特有的类和依赖的类到JVM上。
- 自动部署 Auto Deploy:Tomcat发现多了这个应用就把它加载并启动起来
- 手动部署
- 冷部署:将webapp放到指定目录,才去启动Tomcat
- 热部署:Tomcat服务不停止,需要依赖manager、ant脚本、tcd(tomcat clientdeployer)等工具
- 反部署undeploy:停止webapp的运行,并从JVM上清除已经加载的类,从Tomcat应用目录中移除部署的文件