你知道怎么在生产环境下部署tomcat吗?,灵魂拷问
我们先看一下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吗?,灵魂拷问相关推荐
- 你知道怎么在生产环境下部署tomcat吗?
享学课堂特邀作者:老顾 转载请声明出处! 一.前言 小伙伴们在网上看到的很多文章,都是对tomcat的一些介绍,什么配置啊,怎么启动.其实在生产环境中怎么部署,和网上介绍的有很大区别.这篇文章老顾就带 ...
- mongodb添加创建修改时间_mongodb副本集生产环境下部署案例,推荐一个主两个从三台机器...
Linux中部署Mongodb副本集 提示: 以下操作步骤较多,请耐心阅读. 关于理论部分请参考上篇浅谈mongodb副本集. 1. 准备 192.168.102.110 master 192.168 ...
- redis生产环境下部署lua脚本
加载到redis redis-cli script load "$(cat test.lua)" 得到sha1值 执行 redis-cli evalsha "7a2054 ...
- windows环境下部署Tomcat到服务器
1.在系统变量中设置: 变量名:CATALINA_HOME 变量值:D:\Program Files\Tomcat7.0.81 (放Tomcat的主目录) 2.系统变量的PATH变量中增加Tomc ...
- 【转】在生产环境中部署前端代码
在生产环境中部署前端代码 本文章前端代码是基于vue+webpack开发的 Nginx是一款轻量级的Web 服务器/反向代理服务器 首先,webpack配置如下 在开发过程中,我们是通过npm run ...
- 在生产环境下处理EFCore数据库迁移的五种方法
在生产环境下处理EFCore数据库迁移的五种方法 原文链接:https://www.thereformedprogrammer.net/handling-entity-framework-core-d ...
- mysql jail_2.1.5 jail在生产环境下的注意事项
2.1.5 jail在生产环境下的注意事项 我们将jail用在线上的生产环境,发现其中有许多需要注意的事项,如下所示: 1)线上的服务器用的jail机器还是挺多的,通常一台Dell PowerEdge ...
- 多个vue项目生产环境下NGINX配置文件
多个vue项目生产环境下NGINX配置文件 使用场景 1.多个前端项目 2.多个后端项目 3.修改nginx配置后端接口转发路径 4.反向代理 某个目录下 带特定后缀名的文件 5.vue3项目 使用前 ...
- Kubernetes 生产环境安装部署 基于 Kubernetes v1.14.0 之 etcd集群
说明:没有明确注明在某台服务器,都是在k8s-operation 工作服务器完成 K8S node 节点数大于2000 节点 k8s-operation 目录规划,工作目录/apps/work/k8s ...
最新文章
- 分享:Arcadia 0.12.1 发布,Ruby 集成开发环境
- android.os.NetworkOnMainThreadException异常
- C# 加载 SQLite DLL问题
- 直线段检测算法(LSD:a Line Segment Detector)
- 个人小应用服务器安装搭建,HP 360p Gen9 使用winpe安装centos[一]
- LINQ to SQL 实现 GROUP BY、聚合、ORDER BY
- 如何在客户端终止一个已经发出的HTTP请求
- Eclipse 下载 开源项目 maven依赖丢失和 Deployment Assembly 丢失
- 微信iOS多设备多字体适配方案总结
- 基于springboot+vue的汽车销售系统(前后端分离)
- 与组合数有关的一些求和公式
- 苹果7系统更新12无服务器,别再为苹果手机无法更新系统犯难,这几种方式帮你解决!...
- G312高速公路S标段路线设计--金陵科技学院道路毕业设计
- sql 事务(Transaction)
- 二级域名设置解析方法
- 自动化(二)使用Python打开网页
- Sublime Text 3 简体中文汉化包使用方法 ( 更新时间2019.03.20 )
- Element 单元格合计(多行合计、合计列合并)
- LeetCode225. Implement Stack using Queues
- 好记性不如烂笔头(2)
热门文章
- YOLOv5-Lite 使用笔记
- c++之数组指针作为形参,并返回数组
- cannot import name 'ImageRecordInt8Iter'
- python OrderedDict 详解
- python elasticsearch 更新后刷新
- Python3 调用ffmpeg
- NDK中C++标准库、STL的配置;Include其他头文件
- 联想拯救者15isk装win10系统_笔记本电脑触摸板操作手势合集以拯救者Win10系统为例...
- 学文科的优势_男生学文科,出路在哪里?带了十几年文科的班主任道出了实情...
- Selenium之鼠标和键盘操作及扩展