• Tomcat生产部署多个应用


    前言

    我们知道,部署一个Tomcat 有四种方式:

    1. Tomcat主webapps 下面放上war 包;
    2. Tomcat主webapps 下面expanded 解压的包;
    3. 直接在 Tomcat的主Server.xml里面配置 Context;
    4. 文件描述符方式
    # 文件描述符方式;
    conf/Catalina/
    └── localhost
    └──────appName.xml
    
    • 1
    • 2
    • 3
    • 4

    本文演示的算是根据以上发展的一种变种。针对面向生产部署的一种方案:
    原理就是复用 一个Tomcat 的执行能力,转换工作目录进行工作
    本文参考了一些 运维视频,博客,等等,关键词:Tomcat生产部署 等
    对于网上的分享,在此深表感谢。
    当然,本人水平有限,所见浅薄,如有纰漏,可以指出讨论。

    本文所用为我自己电脑的vm虚拟机,所用的配置文件等来源官网,命名等为虚构,不涉密

    前置

    • 结构
    <Connector></Connector>  
    <Engine>   # 引擎管理 主机 ( 主机要在 引擎里面 启动)    PipLine
     		<Host>       # 虚拟主机  (应用部署在虚拟主机上面)  PipLine
      			<context>   # 在里面定义一个应用         PipLine
      					<wrapper>       #             PipLine
      								<servlet> </servlet>
      					</wrapper>
      					# 其他配置
      			</context>   
     		</Host>
    </engine> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • Pipline 属于管道,管道概念中可以有配置Valve 阀门
    • 部署生产:Tomcat和源码隔离,源码之间隔离

    环境

    • apache-tomcat-9.0.56
    • Ubuntu 22.4
    • openjdk 11.0.14.1 2022-02-08

    TODO:一个Tomcat部署两个应用 demo01 demo02

    步骤

    1.目录结构准备

    我们需要两种目录:
    源码目录 部署目录
    部署目录:

    # 因为原来的包名字太长等原因,用软连接,更灵活
    adward@adward-cp:/usr/local/softwares$ ll
    总用量 8
    drwxr-xr-x  2 adward root   4096  529 17:38 ./
    drwxr-xr-x 13 root   root   4096  526 19:01 ../
    lrwxrwxrwx  1 adward adward   45  526 19:02 tomcat -> /usr/local/softwaresbac/apache-tomcat-9.0.56//
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    adward@adward-cp:/usr/local/softwares/tomcat$ cp -rf /usr/local/softwares/tomcat/{conf,logs,temp,work} /usr/local/webapps/web01/
    adward@adward-cp:/usr/local/softwares/tomcat$ cp -rf /usr/local/softwares/tomcat/{conf,logs,temp,work} /usr/local/webapps/web02/
    adward@adward-cp:/usr/local/softwares/tomcat$ tree -L 1 web01 web02
    web01
    ├── conf
    ├── logs
    ├── temp
    └── work
    web02
    ├── conf
    ├── logs
    ├── temp
    └── work
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.修改配置文件

    对于web01和web02 ,修改配置文件,分别修改两者的
    conf/server.xml
    关注三个地方:

    该处原来是8005

    该处原来是8005,现在自行修改一个就行,用自己喜欢的
    这个8005 是什么 ? 可以百度这个:telnet 127.0.0.1 8005

    在这里插入图片描述
    上面这个地方,原来是 8080;

    在这里插入图片描述
    以上是我源码的位置,appBase 可以盘算一下,根据你想要的结果,你懂得。
    我的源码结构如下,就是意思意思:

    # 为啥还要再包一层 web01 ? 
    # 因为我觉得 直接放demo01 demo02 太单薄,可能会冻着,后期,我可以在demo01放上一点和他相关的零食啥的,比较方便,你放外面,要删就都删了
    adward@adward-cp:/usr/local/webapps$ tree -L 2 web01 web02
    web01
    └── demo01
        └── index.html
    web02
    └── demo02
        └── index.html
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    因为到时候我希望这样访问:index.html里面就是写的文字。
    在这里插入图片描述

    到这里改完三处,完事,第二个应用,照猫画虎。

    源码目录,我上面已经摆出来了

    3.执行脚本:

    到这里还差最关键一步: # startMe.sh 名字随意
    最后做成这样,

    看得出来,CATALINA_HOME 就好比锅铲,
    CATALINA_BASE 就好比是锅子,一个锅铲炒两个锅子

    adward@adward-cp:/usr/local/softwares/tomcat$ tree -L 1 web01 web02
    web01
    ├── conf
    ├── logs
    ├── startMe.sh
    ├── temp
    └── work
    web02
    ├── conf
    ├── logs
    ├── startMe.sh
    ├── temp
    └── work
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    #!/bin/bash
    # ./etc/init.d/functions
    
    export JAVA_OPTS="-Xms100m -Xmx200m"
    export JAVA_HOME="/usr/"
    export CATALINA_HOME="/usr/local/softwares/tomcat/"
    export CATALINA_BASE="/usr/local/softwares/tomcat/web01"
    
    case $1 in
            start)
                    $CATALINA_HOME/bin/catalina.sh start
                    echo start success!!
                    ;;
            stop)
                    $CATALINA_HOME/bin/catalina.sh stop
                    echo stop success!!
                    ;;
            restart)
                    $CATALINA_HOME/bin/catalina.sh stop
                    echo stop success!!
                    sleep 2
                    $CATALINA_HOME/bin/catalina.sh start
                    echo start success!!
                    ;;
            version)
                    $CATALINA_HOME/bin/catalina.sh version
                    ;;
            configtest)
                    $CATALINA_HOME/bin/catalina.sh configtest
                    ;;
    esac
    exit 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    以上是我自己的配置,按需修改。
    其实 Tomcat 的bin里面 的 startup.sh 里面 就是 调用的 catalina.sh start 。

    4.调试

    此处如果 端口占用 什么的,自行处理好。
    然后 启动的话,看上面的脚本就能明白,要用:

    $ sh startMe.sh start
    
    • 1

    最后访问一下就行:
    在这里插入图片描述

    在这里插入图片描述

    到这里简单配置就结束了。


    5. 后续

    后续的话,可以配置数据源,在 Context 的标签里面,大概这个样子。

    <Resource name="jdbc/dstest" auth="Container"
            type="javax.sql.DataSource" 
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/student"
            username="root" password="123456" maxActive="5"
            maxIdle="2" maxWait="10000"/>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这个东西网上一搜还蛮多的。我回头试一试。
    .

    .

    .

    参考鸣谢:

    (见评论区)

    最近北京热起来了,啊,一天天的,周末就这样很快就过去了。人也很累。
    北京啊北京,一晃快三十了,加油吧💪🏻!希望疫情早点过去,也祝我好运 🍀

  • 相关阅读:
    java毕业设计在线测评系统2021Mybatis+系统+数据库+调试部署
    5. 最长回文子串
    MYSQL运维篇(已完结)
    安徽省专业技术类职业资格与职称对应表
    echarts快速实现迁徙地图
    [c语言]小课堂 day6
    react路由传参的几种方式
    计算机毕业设计(附源码)python整形医院管理系统
    Spring Boot中集成Redis实现缓存功能
    【计算机网络六】应用层
  • 原文地址:https://blog.csdn.net/weixin_43891945/article/details/125035390