IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Tomcat生产部署多个应用 -> 正文阅读

[Java知识库]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"/>

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

.

.

参考鸣谢:

(见评论区)

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

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:02:20  更:2022-06-01 15:05:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:42:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码