Tomcat生产部署多个应用

前言

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

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

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

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

前置

  • 结构
<Connector></Connector>  
<Engine>   # 引擎管理 主机 ( 主机要在 引擎里面 启动)    PipLine
 		<Host>       # 虚拟主机  (应用部署在虚拟主机上面)  PipLine
  			<context>   # 在里面定义一个应用         PipLine
  					<wrapper>       #             PipLine
  								<servlet> </servlet>
  					</wrapper>
  					# 其他配置
  			</context>   
 		</Host>
</engine> 
  • 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//
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

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

因为到时候我希望这样访问: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
#!/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

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

4.调试

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

$ sh startMe.sh start

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

在这里插入图片描述

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


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"/>

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

.

.

参考鸣谢:

(见评论区)

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋夜白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值