我们先看一下Tomcat目录结构:

--bin //存放着tomcat启动和关闭脚本--conf //存放着tomcat服务器的各种配置文件--lib //tomcat服务器和所有web应用所属的jar文件--logs //存放着Tomcat的日志文件--temp //存放着Tomcat的运行时产生的临时文件--webapps //把web应用放到此目录即可--work //Tomcat将jsp生成的servlet源文件和字节码文件放到此目录

我们要部署一个web应用,只要把应用的war包放到webapps就可以了。网上一般也是这么讲的。小伙伴们觉得有什么问题吗

我们看一下,如果我们要部署两个web应用Web-A和Web-B,把他放到webapps中。我们到bin目录下运行startup.sh启动,这样web-A和web-B就可以访问了。

如果现在业务上需要把web-B先暂停,那我们改怎么办?还有就是tomcat启动是会有启动参数设置,如最大线程数,最小线程数等配置。那web-A和web-B怎么配置不一样的启动参数呢?

其实还有一个问题,如果我们要把**tomcat版本升级,怎么办?**把tomcat直接覆盖?那些web应用重新部署?

小伙伴们,应该怎么办呢?

四、目录规划

tomcat软链接

我们先把tomcat应用放到/usr/local目录下

# cd /usr/local# lldrwxr-xr-x.  9 root root  220 5月   8 19:23 apache-tomcat-8.5.40

上面我们是应用了tomcat8.5版本,如果我们需要升级到9.x版本的话,如果我们需要升级到9.x版本的话,那关于tomcat目录的路径就需要重新修改,这就太不方便了,所以我们可以用软链接的方式解决这个问题

# ln -s apache-tomcat-8.5.40 tomcat# lldrwxr-xr-x.  9 root root  220 5月   8 19:23 apache-tomcat-8.5.40lrwxrwxrwx.  1 root root   20 5月   8 16:42 tomcat -> apache-tomcat-8.5.40

这样以后用tomcat应用路径,就直接使用tomcat这个软链接,即使将来tomcat升级只要修改一些软链接就行了,其他就不需要改。

目录分离

我们应该要把tomcat和web应用目录分离出来,即使tomcat升级也跟web应用没有关系。那分离出来,怎么启动呢?

我们要利用启动参数中的CATALINA_HOME和CATALINA_BASE,来指定tomcat程序应用和web应用;通过CATALINA_BASE就可以实现web应用分离出去,我们来看一些tomcat一共有哪些启动参数

启动参数 描述说明
JAVA_OPT jvm启动参数,设置内存 编码等-Xms100m -Xmx200m -Dfile.encoding=UTF-8
JAVA_HOME 指定jdk目录
CATALINA_HOME tomcat程序根目录
CATALINA_BASE 应用部署目录,默认为 $CATALINA_HOME
CATALINA_OUT 应用日志输出目录,默认为$CATALINA_BASE/logs
CATALINA_TMPDIR 应用临时目录,默认为$CATALINA_BASE/temp

我们先在/usr/local目录下新建一个web-apps目录,此目录就放web应用

# mkdir web-apps
# ll
lrwxrwxrwx.  1 root root   20 5月   8 16:42 tomcat -> apache-tomcat-8.5.40
drwxr-xr-x.  2 root root    6 5月   8 20:29 web-apps

在web-apps目录下,新建web-a和web-b目录,这两个目录就是web-A和web-b的web应用目录。

# cd web-apps/
# mkdir web-a
# mkdir web-b
# ll
drwxr-xr-x. 2 root root 6 5月   8 20:33 web-a
drwxr-xr-x. 2 root root 6 5月   8 20:33 web-b

把tomcat程序中的conf目录拷贝到web-a和web-b里面,这样各个web应用都有各自的配置文件。

# cp -r /usr/local/tomcat/conf /usr/local/web-apps/web-a/
# cp -r /usr/local/tomcat/conf /usr/local/web-apps/web-b/

再在web-a和web-b目录下,新建webapps和logs目录,webapps存放web应用,logs存放日志文件。

到此目录分离开了,但还缺少一个启动脚本

五、启动脚本

此启动脚本,老顾引用了网上的一个脚本改造了一下,命名为tomcat.sh

#!/bin/bash
export JAVA_OPTS="-Xms100m -Xmx200m"
export JAVA_HOME="/usr/java/jdk1.8.0_181"
export CATALINA_HOME="/usr/local/tomcat"
export CATALINA_BASE="`pwd`"case $1 instart)$CATALINA_HOME/bin/catalina.sh startecho start success!!;;stop)$CATALINA_HOME/bin/catalina.sh stopecho stop success!!;;restart)$CATALINA_HOME/bin/catalina.sh stopecho stop success!!sleep 2# 给大家分享下我的复习的面试资料> 这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)
>
> **资料获取方式:[戳这里前往我的腾讯文档免费下载](https://gitee.com/vip204888/java-p7)***   **第一部分:Java基础-中级-高级**![image](https://img-blog.csdnimg.cn/img_convert/f480047e16f3fd5009b6db41afe6efd5.png)*   **第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)**![image](https://img-blog.csdnimg.cn/img_convert/ee283a4d56ecfddf795362f83574935f.png)*   **第三部分:性能调优(JVM+MySQL+Tomcat)**![image](https://img-blog.csdnimg.cn/img_convert/ddf257d174486e99a9eb93f209c5bf79.png)*   **第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)**![image](https://img-blog.csdnimg.cn/img_convert/60799be036fc0623c9cc6118edbe7cd9.png)*   **第五部分:微服务(SpringBoot+SpringCloud+Dubbo)**![image](https://img-blog.csdnimg.cn/img_convert/28775749f575fb0032394b17da13e4c5.png)*   **第六部分:其他:并发编程+设计模式+数据结构与算法+网络**![image](https://img-blog.csdnimg.cn/img_convert/7f6e31fbe6ae97dbcf59c632a535b67b.png)# 进阶学习笔记pdf>都已整理好,需免费[下载点击这里即可](https://gitee.com/vip204888/java-p7)
>
>*   **Java架构进阶之架构筑基篇(**Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法**)**![image](https://img-blog.csdnimg.cn/img_convert/79b43efd387779151b75aba2423a15bc.png)*   **Java架构进阶之开源框架篇(**设计模式+Spring+SpringMVC+MyBatis**)**![image](https://img-blog.csdnimg.cn/img_convert/c34aa46cb295490e0327bef1e0f868b4.png)![image](https://img-blog.csdnimg.cn/img_convert/5fbb08c30759767f0436952154faccf7.png)![image](https://img-blog.csdnimg.cn/img_convert/49442f1f7085fba5111ddc732632c5a4.png)*   **Java架构进阶之分布式架构篇 (**限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka)**)**![image](https://img-blog.csdnimg.cn/img_convert/d7fdef448dec45e03b9c43ded7be2b92.png)![image](https://img-blog.csdnimg.cn/img_convert/6590177aa6ba4f93366ee7d598ea6bdb.png)![image](https://img-blog.csdnimg.cn/img_convert/6c4f219123547e0ecd3eaa01fa14728c.png)*   **Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)**![image](https://img-blog.csdnimg.cn/img_convert/a71ebabf8472822a2c7fbbf766cadd91.png)![image](https://img-blog.csdnimg.cn/img_convert/1e357ac9c6e9ee565994d583e3e71dc3.png)转存中...(img-RuyCBi32-1628434511740)]*   **Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)**[外链图片转存中...(img-Q956VplS-1628434511742)][外链图片转存中...(img-NugrDuqW-1628434511743)]

你知道怎么在生产环境下部署tomcat吗?,灵魂拷问相关推荐

  1. 你知道怎么在生产环境下部署tomcat吗?

    享学课堂特邀作者:老顾 转载请声明出处! 一.前言 小伙伴们在网上看到的很多文章,都是对tomcat的一些介绍,什么配置啊,怎么启动.其实在生产环境中怎么部署,和网上介绍的有很大区别.这篇文章老顾就带 ...

  2. mongodb添加创建修改时间_mongodb副本集生产环境下部署案例,推荐一个主两个从三台机器...

    Linux中部署Mongodb副本集 提示: 以下操作步骤较多,请耐心阅读. 关于理论部分请参考上篇浅谈mongodb副本集. 1. 准备 192.168.102.110 master 192.168 ...

  3. redis生产环境下部署lua脚本

    加载到redis redis-cli script load "$(cat test.lua)" 得到sha1值 执行 redis-cli evalsha "7a2054 ...

  4. windows环境下部署Tomcat到服务器

    1.在系统变量中设置: 变量名:CATALINA_HOME 变量值:D:\Program Files\Tomcat7.0.81   (放Tomcat的主目录) 2.系统变量的PATH变量中增加Tomc ...

  5. 【转】在生产环境中部署前端代码

    在生产环境中部署前端代码 本文章前端代码是基于vue+webpack开发的 Nginx是一款轻量级的Web 服务器/反向代理服务器 首先,webpack配置如下 在开发过程中,我们是通过npm run ...

  6. 在生产环境下处理EFCore数据库迁移的五种方法

    在生产环境下处理EFCore数据库迁移的五种方法 原文链接:https://www.thereformedprogrammer.net/handling-entity-framework-core-d ...

  7. mysql jail_2.1.5 jail在生产环境下的注意事项

    2.1.5 jail在生产环境下的注意事项 我们将jail用在线上的生产环境,发现其中有许多需要注意的事项,如下所示: 1)线上的服务器用的jail机器还是挺多的,通常一台Dell PowerEdge ...

  8. 多个vue项目生产环境下NGINX配置文件

    多个vue项目生产环境下NGINX配置文件 使用场景 1.多个前端项目 2.多个后端项目 3.修改nginx配置后端接口转发路径 4.反向代理 某个目录下 带特定后缀名的文件 5.vue3项目 使用前 ...

  9. Kubernetes 生产环境安装部署 基于 Kubernetes v1.14.0 之 etcd集群

    说明:没有明确注明在某台服务器,都是在k8s-operation 工作服务器完成 K8S node 节点数大于2000 节点 k8s-operation 目录规划,工作目录/apps/work/k8s ...

最新文章

  1. 分享:Arcadia 0.12.1 发布,Ruby 集成开发环境
  2. android.os.NetworkOnMainThreadException异常
  3. C# 加载 SQLite DLL问题
  4. 直线段检测算法(LSD:a Line Segment Detector)
  5. 个人小应用服务器安装搭建,HP 360p Gen9 使用winpe安装centos[一]
  6. LINQ to SQL 实现 GROUP BY、聚合、ORDER BY
  7. 如何在客户端终止一个已经发出的HTTP请求
  8. Eclipse 下载 开源项目 maven依赖丢失和 Deployment Assembly 丢失
  9. 微信iOS多设备多字体适配方案总结
  10. 基于springboot+vue的汽车销售系统(前后端分离)
  11. 与组合数有关的一些求和公式
  12. 苹果7系统更新12无服务器,别再为苹果手机无法更新系统犯难,这几种方式帮你解决!...
  13. G312高速公路S标段路线设计--金陵科技学院道路毕业设计
  14. sql 事务(Transaction)
  15. 二级域名设置解析方法
  16. 自动化(二)使用Python打开网页
  17. Sublime Text 3 简体中文汉化包使用方法 ( 更新时间2019.03.20 )
  18. Element 单元格合计(多行合计、合计列合并)
  19. LeetCode225. Implement Stack using Queues
  20. 好记性不如烂笔头(2)

热门文章

  1. YOLOv5-Lite 使用笔记
  2. c++之数组指针作为形参,并返回数组
  3. cannot import name 'ImageRecordInt8Iter'
  4. python OrderedDict 详解
  5. python elasticsearch 更新后刷新
  6. Python3 调用ffmpeg
  7. NDK中C++标准库、STL的配置;Include其他头文件
  8. 联想拯救者15isk装win10系统_笔记本电脑触摸板操作手势合集以拯救者Win10系统为例...
  9. 学文科的优势_男生学文科,出路在哪里?带了十几年文科的班主任道出了实情...
  10. Selenium之鼠标和键盘操作及扩展