《应用拆分与平台搭建最佳实践》- tomcat多实例
2017-08-02 12:42
381 查看
《应用拆分与平台搭建最佳实践》- 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文件夹的结构。
confwebapps
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/bash mvn 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/bash export JAVA_HOME=${java.home} export TOMCAT_HOME=${tomcat.home} export WEB_APP_HOME=${app.home} export CATALINA_BASE=$WEB_APP_HOME export APP_DEPLOY_HOME=$WEB_APP_HOME/deploy export APP_PORT=${app.port} export APP_DEBUG_PORT=${app.debug.port} export APP_OUTPUT=$WEB_APP_HOME/deploy/output export 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.log export CATALINA_OUT=/dev/null export 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/bash export CATALINA_BASE=${app.home} export CATALINA_HOME=${tomcat.home} $CATALINA_HOME/bin/shutdown.sh
可以看出,run.sh 在启动的时候需要很多参数,甚至需要配置jvm,但是stop.sh只需要告诉应用地址,和tomcat程序目录就可以。
当然,这些参数并不是固定的,可以根据需要变更,配置的都是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
相关文章推荐
- 《应用拆分与平台搭建最佳实践》- 前言
- 《应用拆分与平台搭建最佳实践》- 怎么拆
- 《应用拆分与平台搭建最佳实践》- 拆分中的工作内容
- 《应用拆分与平台搭建最佳实践》- 拆分中两个核心问题
- 《应用拆分与平台搭建最佳实践》- 服务化的权限
- 《应用拆分与平台搭建最佳实践》- 单点登陆
- 《应用拆分与平台搭建最佳实践》- 跨应用平台资源
- 探索跨平台应用开发的最佳实践
- AD DS最佳实践分析程序(BPA)应用实例---扫描并归档结果 推荐
- 将项目拆分搭建dubbo项目(二)dubbo项目搭建实例与应用
- 搭建Tomcat应用服务器、tomcat虚拟主机及Tomcat多实例部署
- 探索跨平台应用开发的最佳实践
- aws云平台的搭建相关资料和web站点tomcat搭建与mysql搭建实例
- 应用 Command 模式进行流水号管理的最佳实践
- Android开发:性能最佳实践-管理应用内存
- 基于react技术栈的单页应用(SPA)搭建_快速入门实践
- 美团实时计算平台实践与应用
- 阿里SaaS性能测试平台PTS最佳实践
- 【应用】Android平台最佳健身
- 在 Docker 上开发应用 - 最佳实践