我们知道,部署一个Tomcat 有四种方式:
# 文件描述符方式;
conf/Catalina/
└── localhost
└──────appName.xml
本文演示的算是根据以上发展的一种变种。针对面向生产部署的一种方案:
原理就是复用 一个Tomcat 的执行能力,转换工作目录进行工作
本文参考了一些 运维视频,博客,等等,关键词:Tomcat生产部署 等
对于网上的分享,在此深表感谢。
当然,本人水平有限,所见浅薄,如有纰漏,可以指出讨论。
本文所用为我自己电脑的vm虚拟机,所用的配置文件等来源官网,命名等为虚构,不涉密
<Connector></Connector>
<Engine> # 引擎管理 主机 ( 主机要在 引擎里面 启动) PipLine
<Host> # 虚拟主机 (应用部署在虚拟主机上面) PipLine
<context> # 在里面定义一个应用 PipLine
<wrapper> # PipLine
<servlet> </servlet>
</wrapper>
# 其他配置
</context>
</Host>
</engine>
apache-tomcat-9.0.56
Ubuntu 22.4
openjdk 11.0.14.1 2022-02-08
TODO:一个Tomcat部署两个应用 demo01 demo02
我们需要两种目录:
源码目录 部署目录
部署目录:
# 因为原来的包名字太长等原因,用软连接,更灵活
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
对于web01和web02 ,修改配置文件,分别修改两者的
conf/server.xml
关注三个地方:
该处原来是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里面就是写的文字。
到这里改完三处,完事,第二个应用,照猫画虎。
源码目录,我上面已经摆出来了
到这里还差最关键一步: # 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 。
此处如果 端口占用 什么的,自行处理好。
然后 启动的话,看上面的脚本就能明白,要用:
$ sh startMe.sh start
最后访问一下就行:
到这里简单配置就结束了。
后续的话,可以配置数据源,在 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"/>
这个东西网上一搜还蛮多的。我回头试一试。
.
.
.
(见评论区)
最近北京热起来了,啊,一天天的,周末就这样很快就过去了。人也很累。
北京啊北京,一晃快三十了,加油吧💪🏻!希望疫情早点过去,也祝我好运 🍀