前言
我们知道,部署一个Tomcat 有四种方式:
- Tomcat主webapps 下面放上war 包;
- Tomcat主webapps 下面expanded 解压的包;
- 直接在 Tomcat的主Server.xml里面配置 Context;
- 文件描述符方式
conf/Catalina/
└── localhost
└──────appName.xml
本文演示的算是根据以上发展的一种变种。针对面向生产部署的一种方案: 原理就是复用 一个Tomcat 的执行能力,转换工作目录进行工作 本文参考了一些 运维视频,博客,等等,关键词:Tomcat生产部署 等 对于网上的分享,在此深表感谢。 当然,本人水平有限,所见浅薄,如有纰漏,可以指出讨论。
本文所用为我自己电脑的vm虚拟机,所用的配置文件等来源官网,命名等为虚构,不涉密
前置
<Connector></Connector>
<Engine>
<Host>
<context>
<wrapper>
<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 5月 29 17:38 ./
drwxr-xr-x 13 root root 4096 5月 26 19:01 ../
lrwxrwxrwx 1 adward adward 45 5月 26 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 是什么 ? 可以百度这个:telnet 127.0.0.1 8005
上面这个地方,原来是 8080;
以上是我源码的位置,appBase 可以盘算一下,根据你想要的结果,你懂得。 我的源码结构如下,就是意思意思:
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
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"/>
这个东西网上一搜还蛮多的。我回头试一试。 .
.
.
参考鸣谢:
(见评论区)
最近北京热起来了,啊,一天天的,周末就这样很快就过去了。人也很累。 北京啊北京,一晃快三十了,加油吧💪🏻!希望疫情早点过去,也祝我好运 🍀
|