1. Tomcat 简介

tomcatWeb Container 的开源实现, 是一个轻量级的 web 服务器, 是开发和调试 JSP 程序的首选

1.1. Tomcat 架构组件

  • Server: Tomcat 的一个实例, 通常一个 JVM 只能包含一个 Tomcat 实例; 是 Tomcat 中的顶级组件, 一个 Server 包含一个或多个 Service
  • Service: Service 调用 Servlet Engine, 用于处理客户端请求
  • Connectors: 负责连接客户端请求至 Servlet 容器内的 Web 应用程序, 通常指的是接收客户发来请求的位置及服务器端分配的端口。默认端口通常是 HTTP 协议的 8080, 一个引擎可以配置多个连接器, 但这些连接器必须使用不同的端口; 默认的连接器是基于 HTTP/1.1Coyote
  • Engine: Engine 是指处理请求的 Servlet 引擎组件, 它检查请求的 HTTP 首部信息以辨别请求应该发往哪个 hostcontext, 并将请求处理后的结果返回的相应的客户端
  • Host: Host 组件类似于 Apache 中的虚拟主机, 但在 Tomcat 中只支持基于 FQDN"虚拟主机"。并且一个引擎至少要包含一个主机
  • Context: Context 组件是最内层次的组件, 它表示 Web 应用程序本身; 配置一个 Context 最主要的是指定 Web 应用程序的根目录, 以便 Servlet 容器能够将用户请求发往正确的位置

2. 部署 Tomcat 9

2.1. 安装 Tomcat

[root@localhost ~]# yum -y install java-1.8.0-openjdk.x86_64
[root@localhost ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.24/bin/apache-tomcat-9.0.24.tar.gz
[root@localhost ~]# tar xvf apache-tomcat-9.0.24.tar.gz -C /usr/local/
[root@localhost ~]# ln -s /usr/local/apache-tomcat-9.0.24/ /usr/local/tomcat
[root@localhost ~]# cat > /etc/profile.d/java.sh << EOF
export CATALINA_HOME=/usr/local/tomcat
export PATH=\${CATALINA_HOME}/bin:\${PATH}
EOF
[root@localhost ~]# source /etc/profile.d/java.sh
[root@localhost ~]# exec bash
[root@localhost ~]# catalina.sh start

2.2. Tomcat 目录结构

bin  可执行脚本
lib  运行时依赖的库文件
logs 日志文件
work Tomcat 的工作目录
conf 配置文件
    server.xml: Tomcat 的主配置文件, 包含 Service, Connector, Engine, Realm, Valve, Hosts 等组件的相关配置信息
    web.xml: 遵循 Servlet 规范标准的配置文件, 用于配置 servlet, 并为所有的 Web 应用程序提供默认配置信息
    tomcat-user.xml: 用户认证时用到的相关角色、用户和密码等信息
    context.xml: 所有 host 的默认配置信息
    catalina.policy: Java 相关的安全策略配置文件, 在系统资源级别上提供访问控制的能力
    catalina.properties: Tomcat 内部 Package 的定义及访问相关的控制
    logging.properties: 日志记录相关的配置信息

webapps: web 应用所在目录, web 资源的存放目录
    docs: 帮助文档
    examples: 配置示例
    host-manager: 虚拟主机管理
    manager: Tomcat 管理
    ROOT: 默认访问目录

    每个应用程序目录下都有几个同样的目录
        WEB-INF:当前webapp的私有资源,通常存放当前webapp的web.xml文件
        META-INF:当前webapp的私有资源,通常存放当前webapp的context.xml文件
        classes:当前webapp的私有类
        lib:当前webapp的私有类,打包为jar格式
        index.jpg:当前webapp的首页

2.3. 部署 webapp

冷部署: 把 webapp 复制的指定目录之后重启 Tomcat
热部署: 在不停止 Tomcat 的前提下部署 webapp
    部署工具: manager(Tomcat 的管理页面)
反部署: 停止 webapp 并从 Tomcat 实例中拆除其相关文件

stop: 停止 webapp
start: 启动 ebapp
redeploy: 重新部署

2.4. 在 Tomcat 中部署 Jenkins

[root@localhost ~]# wget -O /usr/local/tomcat/webapps/jenkins.war http://mirror.serverion.com/jenkins/war-stable/2.176.3/jenkins.war
[root@localhost ~]# catalina.sh stop
[root@localhost ~]# catalina.sh start