博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生产环境下到底该如何部署Tomcat?
阅读量:5771 次
发布时间:2019-06-18

本文共 2455 字,大约阅读时间需要 8 分钟。

作者:享学课堂老顾

微信公众号: 享学课堂online

一、前言

小伙伴们在网上看到的很多文章,都是对Tomcat的一些介绍,什么配置啊,怎么启动。其实在生产环境中怎么部署,和网上介绍的有很大区别!

这篇文章老顾就带着大家分享一些如何在生产环境下部署。这里不介绍Tomcat的一些线程数的配置了,网上一大堆,核心介绍网上没有的。

另外,每个公司的业务场景不一样,Tomcat的部署方案可能有所不能,所以请大家轻喷!

二、Tomcat组件

我们先回顾一下Tomcat有哪些组件:

Tomcat请求流程:

1、对外接收请求是Connector连接器组件,可以支持不同协议,Connector组件中可设置端口,所以我们请求的时候需要输入端口号。可以把Connector当作接待员。

2、Connector组件接收到请求后,转发给处理Engine(catalina引擎)组件去处理。

3、根据请求的域名,分配到对应的Host主机。

4、在根据path分配context组件

**区分项目有2个核心组件,一个是Host,一个是Context。**根据域名和path分配不同的项目。其实还少了一个就是启动参数的配置,也就是不同项目的启动参数也可以不一样,如端口号,线程数啊。

推荐阅读:《》

三、部署目录

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

我们要部署一个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目录下:

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

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

五、目录分离

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

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

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

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

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

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

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

六、启动脚本

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

脚本比较简单,核心就是启动参数,只要注意CATALINA_BASE="pwd"的意思是,执行脚本的路径,也就是代表web应用路径是脚本执行的路径;

再把tomcat.sh设置一些启动权限 # chmod +x tomcat.sh 。

修改conf下的server.xml

修改了红色字体部分,host中的appBase是相对CATALINA_BASE的路径,就是web应用的路径,context中的path是请求url,docBase也是相对路径,相对于appBase的,当然也可以设置绝对路径。在web-a下创建index.html文件

到现在为止的web-a的目录下

启动tomcat.sh

访问

需要说明的是,在web-a执行tomcat.sh,里面的启动参数CATALINA_BASE是web应用路径,那tomcat.sh脚本中的$CATALINA_HOME/bin/catalina.sh 这个脚本执行所采用的conf配置文件是web-a目录下的,跟Tomcat程序的conf没有任务关系,也跟web-b目录下的conf也没有任何关系,这样就达到了应用之间的配置分离。

补充一下,在配置context和host时,很多公司不会在server.xml配置,而是通过conf/Catalina目录下,新建host和context,这个知识点,网上很多,小伙伴们可自行查看,因为我们已经单应用分离出来了,那样的配置好处不大。

七、总结

上面老顾介绍了Tomcat在生产环境的部署要点,其实还缺少一个环节,就是我们war包或jar包是按照什么流程以及方式上传到生产环境的?这个可以使用自动化集成工具Jenkins

我们一般在学习中,一些介绍的资料都是浅层次的,虽然能够运行起来,但在真实使用过程中需要考虑别的因素(维护的方便性,隔离性等),所以在我们学习到的基础上面会有很大的不一样。希望小伙伴通过自己学习的,一定要结合公司或者前辈们分享的生产实战经验,去理解真正的使用。

热门内容:

1、

2、

3、

4、

5、

6、

7、

8、

转载于:https://juejin.im/post/5cf35f75f265da1bcf5dc49a

你可能感兴趣的文章
’白帽子‘被起诉所见所想
查看>>
python获取文件
查看>>
翻译研讨 2009/10/17 财经新闻《国外投资再次向印度流动》
查看>>
PSP0级 周活动总结表+时间记录日志+缺陷记录日志 表格模板
查看>>
多种方式实现ul中的li居中的利弊
查看>>
mac安装brew和nginx
查看>>
UIButton
查看>>
Android获取各种设备的状态
查看>>
区块链开发_以太坊测试功能
查看>>
CodeChef November Challenge 2013 解题报告
查看>>
[改善Java代码]不推荐覆写start方法
查看>>
JDK中ConcurrentHashMap效率测试
查看>>
UTF-8的BOM含义
查看>>
qgis自定义坐标系与qgis.db问题
查看>>
98. Validate Binary Search Tree - Medium
查看>>
2440A 裸机(Jlink V8+驱动4.9+MDK4.9)总结
查看>>
编写第一个Servlet程序
查看>>
痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(1)- 环境搭建(Python2.7.14 + pySerial3.4 + wxPython4.0.3)...
查看>>
搭建httpd服务
查看>>
使用sort()时的一点注意
查看>>