《应用拆分与平台搭建最佳实践》- tomcat多实例
来源:互联网 发布:gre单词软件 编辑:程序博客网 时间:2024/05/21 18:39
《应用拆分与平台搭建最佳实践》- tomcat多实例
什么是tomcat多实例
一般tomcat部署在远程研发机器上的方式是,打成ROOT.war,放入webapps目录中,自动解压运行。但是这样有一定缺陷,比如根目录只能有一个。
tomcat多实例,就是启动多个tomcat 使用不同的端口来区分。
为什么要用tomcat多实例
1.方便一台远程研发机器,提供多个应用长期服务。
2.方便提供服务的应用平滑启动,停止
如何实现tomcat多实例
你需要tomcat应用conf文件夹下的一些配置文件
1.catalina.policy
2.catalina.properties
3.logging.properties
4.server.xml
5.tomcat-users.xml
6.web.xml(如果你有进行特殊配置)
这几个文件大致干了这几件事情
1.指定需要启动引用的webapps路径
2.各种日志输出路径
3.指定运行jvm环境的jdk路径
4.应用的端口
5.server.xml中其他的端口
首先,我们需要一个类似tomcat文件夹的结构。
conf
webapps
temp
work
大致这4个文件夹。
其次,我们需要可编译的配置文件
正常情况下,这些值都可以手动写死在xml文件之中。但是这个配置文件我们需要复用。
所以,我们需要修改成${}占位符的方式,通过编译的方式,将值从一个公用的配置文件中,读出来写到xml文件中,最后拿来使用。
这个过程,笔者使用的是shell + maven编译的方式。
大致需要5个文件
build.sh
run.sh
stop.sh
pom.xml
tomcat.properties
tomcat.properties中存放的就是编译启动等等,需要的全部的配置
pom.xml配置mvn编译的细节
run和stop控制多实例的启动与停止
build.sh 用来将tomcat.propertie中的配置编译到conf-resource的文件内(如tomca-user.xml)
首先我们看pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>xiaotian.sjo</groupId> <artifactId>deploy.tomcat</artifactId> <version>1.0-SNAPSHOT</version> <!-- Maven build --> <build> <filters> <filter>tomcat.properties</filter> </filters> <resources> <resource> <directory>conf-resource</directory> <filtering>true</filtering> </resource> </resources> </build></project>
很明显制定了编译的目标文件夹,需要编译的配置文件的位置,和目标文件夹下所有的文件
mvn clean package -Dmaven.test.skip=true -f pom.xml -U
会生成在pom.xml同级目录生成target文件夹,里面会有你需要的已经编译好的资源文件。
下面给出完整的shell脚本命令
#!/bin/bashmvn clean package -Dmaven.test.skip=true -f pom.xml -U && rm -rf stop.sh && rm -rf run.sh && rm -rf conf/* && cp -R target/classes/* conf/ && cp conf/run.sh run.sh && cp conf/stop.sh stop.sh
看命令可以很明显的看出来, run.sh 和stop.sh 并不是原本就存在的,也是跟着其他文件一起编译出来后,复制移动得到的。而且每次编译都会重新生成。
下面给出run.sh 和stop.sh
run.sh
#!/bin/bashexport JAVA_HOME=${java.home}export TOMCAT_HOME=${tomcat.home}export WEB_APP_HOME=${app.home}export CATALINA_BASE=$WEB_APP_HOMEexport APP_DEPLOY_HOME=$WEB_APP_HOME/deployexport APP_PORT=${app.port}export APP_DEBUG_PORT=${app.debug.port}export APP_OUTPUT=$WEB_APP_HOME/deploy/outputexport CHECK_STARTUP_URL="http://localhost:$APP_PORT/ok.htm"export STARTUP_SUCCESS_MSG="OK"export TOMCAT_LOG=$APP_OUTPUT/logs/tomcat.log#export CATALINA_OUT=$APP_OUTPUT/logs/catalina.logexport CATALINA_OUT=/dev/nullexport JAVA_OPTS_EXT=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -DdisableIntlRMIStatTask=true"export JAVA_DEBUG_OPT=" -server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=$APP_DEBUG_PORT,server=y,suspend=n "export JAVA_MONITOR_OPTS=" -Dtrace.flag=true -Dtrace.output.dir=$APP_DEPLOY_HOME/trace/ "export JAVA_MEM_OPTS=" -Xms64m -Xmx256m -XX:MaxPermSize=256m "export JAVA_OPTS=" $JAVA_MEM_OPTS $JAVA_DEBUG_OPT $JAVA_MONITOR_OPTS "export JAVA_OPTS=" $JAVA_OPTS $JAVA_OPTS_EXT"sh $TOMCAT_HOME/bin/startup.sh
stop.sh
#!/bin/bashexport CATALINA_BASE=${app.home}export CATALINA_HOME=${tomcat.home}$CATALINA_HOME/bin/shutdown.sh
当然,这些参数并不是固定的,可以根据需要变更,配置的都是conf文件夹下的文件。
最后都执行了tomcat bin路径下的startup 或者shutdown程序。一个启动一个停止。
(当然,停止使用kill -9 才更完全,正常停止了话不需要调用这个,出现异常就不好说了,大家根据自己的需要决定要不要使用kill的脚本方式)
github 完整demo(之后填写地址)
先sh build.sh 然后sh run.sh ,停止使用sh stop.sh。
有了tromcat多实例之后,就可以在一台机器上,部署eureka,login,www,portal,monitor这几个应用了(eureka是服务发现与注册,为login提供跨应用数据交互使用,login需要临时充当权限系统,提供相应的页面权限)。
tomcat多实例,如果写的很完整的情况下,要区分不同环境下,打包的参数模版。可以做的很详细,甚至可以做成集群管理工具,自动化发布脚本,等等,笔者脚本功底不高,并没有那么牛逼。
项目地址 https://github.com/shixiaotian/xiaotian.shi-plat.git
deme http://www.miledao.top/
账户密码
admin admin
user1 user1
user2 user2
user3 user3
账户密码
admin admin
user1 user1
user2 user2
user3 user3
阅读全文
0 0
- 《应用拆分与平台搭建最佳实践》- tomcat多实例
- 《应用拆分与平台搭建最佳实践》- 前言
- 《应用拆分与平台搭建最佳实践》- 怎么拆
- 《应用拆分与平台搭建最佳实践》- 单点登陆
- 《应用拆分与平台搭建最佳实践》- 拆分中的工作内容
- 《应用拆分与平台搭建最佳实践》- 拆分中两个核心问题
- 《应用拆分与平台搭建最佳实践》- 跨应用平台资源
- 《应用拆分与平台搭建最佳实践》- 服务化的权限
- aws云平台的搭建相关资料和web站点tomcat搭建与mysql搭建实例
- 《JavaScript典型应用与最佳实践》
- MySQL高可用最佳应用与实践
- 探索跨平台应用开发的最佳实践
- 探索跨平台应用开发的最佳实践
- tomcat多实例部署实践
- 应用 JMX 最佳实践
- Memcached应用最佳实践
- Apache+Tomcat https应用原理与实践
- 软件需求最佳实践:SERU过程框架原理与应用
- 高仿Vue饿了么 实战开发
- 深入了解Oracle ASM
- 【HDU
- datatables插件导出excel【指定excel单元格格式,禁止用科学计数法显示
- learn python the hard way EX3
- 《应用拆分与平台搭建最佳实践》- tomcat多实例
- ASP.NET MVC – 样式和布局
- Win10安装VS2013注册
- L2-011. 玩转二叉树
- C++ 中如为二维数组分配动态内存
- 【洛谷】P1001-A+B Problem
- linux安装mysql出现Could NOT find Curses (missing CURSES_LIBRARY CURSES_INCLUDE_PATH),提示解决方法
- nginx报错accept4() failed (23: Too many open files in system)
- 深度学习框架-浅析深度学习框架设计中的关键技术
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
与宸字搭配的男孩名字
用宸字取名字好不好
宸字取名男孩霸气名字
宸字笔画顺序怎么写
宸字的含义
宸字五笔怎么打
用宸字给男宝宝取名字
狗年名字带宸字好不好
宸字用于人名的含义
带宸字的有气魄诗句
宸字取名的寓意
带宸字的男孩名字
宸宇
宸宫
月栖宸宫
宸宫txt下载
宸宫txt
帝锦宸宫
宸宫 沐非
宸宫免费阅读
魔鬼的吻痕 宸宫
宸宫大概讲的什么内容
宸宫全文阅读
辰宫
宸熙
宸轩这个名字的寓意
容九
长陵 容九
久婚成爱 容九
容光作品
少女星容光
我的男人容光
容光焕发
容光焕发意思
容光少女星
容光作品集
容光什么成语
偷走他的心 容光
偷走他的心容光
容光焕发打一生肖
妃容天下橙光鲜花破解版