单机多实例Tomcat部署
单机单用户基础上, 如何运行多个tomcat实例. 首先是tomcat的目录结构
- bin – 包含所有运行tomcat的二进制和脚本文件
- lib – 包含tomcat使用的所有共享库
- conf – 包含配置信息, 如tomcat绑定的端口等
- logs – 包含所有的日志文件
- temp – 此目录是tomcat存放的临时文件
- webapps – 此目录非常重要, 这里存放所有的应用程序war包和war包解压后的类和资源目录
- work – 如果应用程序包含jsp文件, 那么每个jsp文件会被编译转化为servlet, 存放于此
当我们运行Tomcat时,会用到5个环境变量
- CATALINA_HOME - Tomcat的安装目录, 通过CATALINA_HOME, 可以得到bin和lib目录
- CATALINA_BASE - Tomcat的工作目录, 其下是conf, logs, temp, webapps, work. 如果不指定则与CATALINA_HOME相同
- CATALINA_TMPDIR
- JRE_HOME/JAVA_HOME
- CLASSPATH
在以上列表中, CATALINA_HOME和JAVA_HOME是必要的环境变量。其它的都可以通过CATALINA_HOME来转换,是可选的。
一般运行Tomcat的方法是,只设置CATALINA_HOME变量,执行startup.sh脚本,startup.sh会自动转换其它未设置的变量。startup.sh设置环境变量时调用catalina.sh脚本,此脚本会读取CATALINA_BASE 的值,在$CATALINA_BASE/conf目录,得到server.xml。这个文件时Tomcat的核心配置,它包含所有的配置信息,如 shutdown端口,connector端口,主机名称,应用目录等。例如,Tomcat通常使用8080作为连接端口,所以我们可以通过 http://localhost:8080/访问。
如果我们已经设置$CATALINA_BASE,Tomcat就会从该变量所对应的目录搜索得到server.xml。
使用此方法可以在一台机器上运行多个Tomcat实例。我们不改变CATALINA_HOME,只在启动/关闭Tomcat之前修改CATALINA_BASE
创建一个名为“tomcat-instance1”的目录,从CATALINA_HOME目录中复制conf,logs,temp,webapps,work目录,修改“tomcat-instance1”目录中的conf/server.xml文件。需要修改的端口是:Shutdown port,Connector port,ajp port和Redirect port。
- Shutdown port – 此端口用于关闭Tomcat。当执行shutdown.sh脚本时,它会给此端口发出一个信号,Tomcat的进程会监听此端口,如果接收到这样的信号,进程会清理退出。
- Connector port - 此端口是应用对外公开发布的端口。
- ajp port – Web服务器(例如Apache的httpd Server)通过此端口和Tomcat进行通信,也可以使用它设置一个负载均衡服务器。
- Redirect port – 如果此Connector支持非SSL请求和接收SSL请求,Catalina会自动将请求指向到此端口。
原始server.xml:
<server port="8005" shutdown="SHUTDOWN">
.....
<connector
connectiontimeout="20000"port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
redirectport="8443" />
<connector port="8009" protocol="AJP/1.3" redirectport="8443" />
</server>
在tomcat-instance1/conf /server.xml文件,配置server port =8105,connector port = 8181,ajp port = 8109。
<server port="8105" shutdown="SHUTDOWN">
.....
<connector
connectiontimeout="20000" port="8181"
protocol="org.apache.coyote.http11.Http11NioProtocol"
redirectport="81443" />
<connector port="8109" protocol="AJP/1.3" redirectport="81443" />
</server>
现在我们可以创建两个脚本文件来启动关闭tomcat-instance1。
startup-instance1.sh
export CATALINA_BASE= /home/ramki/tomcat-instance1
export CATALINA_HOME=/opt/tomcat/apache-tomcat-7.0.62
cd $CATALINA_HOME/bin
./startup.sh
shutdown-instance1.sh
export CATALINA_BASE= /home/ramki/tomcat-instance1
export CATALINA_HOME=/opt/tomcat/apache-tomcat-7.0.62
cd $CATALINA_HOME/bin
./shutdown.sh
这里我们设置了CATALINA_BASE变量并指向新的 tomcat-instance1。因为运行tomcat的所有二进制文件都在CATALINA_HOME/bin目录,随后使用startup/shutdown脚本。也可以直接通过catalina.sh来启动和关闭tomcat:
export JAVA_HOME=/opt/jdk1..0_45
export CATALINA_BASE= /home/ramki/tomcat-instance1
export CATALINA_HOME=/opt/tomcat/apache-tomcat-7.0.62
cd $CATALINA_HOME/bin
./catalina.sh start
单机多实例Tomcat部署的更多相关文章
- elasticsearch单机多实例环境部署
elasticsearch的功能,主要用在搜索领域,这里,我来研究这个,也是项目需要,为公司开发了一款CMS系统,网站上的搜索栏功能,我打算采用elasticsearch来实现. elasticsea ...
- tomcat单机多实例部署
最近在面试的过程中,一家公司在面试时提到了有关tomcat单机多实例部署的提问, 正好, 之前使用IntelliJ IDEA 13.1.4这款IDE开发web项目,在开发的过程中,因为有多个web项目 ...
- Tomcat学习总结(10)——Tomcat多实例冗余部署
昨天在跟群友做技术交流的时候,了解到,有很多大公司都是采用了高可用的,分布式的,实例沉余1+台.但是在小公司的同学也很多,他们反映并不是所有公司都有那样的资源来供你调度.往往公司只会给你一台机器,因为 ...
- tomcat单机多实例
catalina.home指向公用信息的位置,就是bin和lib的父目录. catalina.base指向每个Tomcat目录私有信息的位置,就是conf.logs.temp.webapps和work ...
- 单机多实例mysq 8.0l部署安装
单机多实例mysql部署安装 目的需求 在单台虚拟机部署部署多实例mysql,用于配置mysql replication,MHA等. 思路 多实例安装mysql可以参考<源编译MySQL8.0的 ...
- 聊聊 Tomcat 的单机多实例
Tomcat 从何而来? 先说 Tomcat 这一单词解释,如果你不是一个开发者,当然它在美国口语中并非是褒义词:如果你是开发者,那你一定听过 Web 应用服务器.Sun 公司和 Tomcat .如你 ...
- Tomcat 的单机多实例配置
有时候需要在一个服务器上部署多个Tomcat,通过不同的端口进行区分,比如,反向代理.但是不想简单的通过复制Tomcat来实现,这样既不方便以后的升级也不方便管理,那么这时候就需要配置Tomcat的单 ...
- 通过Zabbix监控Tomcat单机多实例
前面已经介绍过Tomcat单机多实例部署,接下来就在他的基础上进行下一步操作:Tomcat多实例监控! Tomcat多实例监控过程和之前的redis多实例原理一样,分为以下4步: 1.获取多实例 2. ...
- Mysql 数据库单机多实例部署手记
最近的研发机器需要部署多个环境,包括数据库.为了管理方便考虑将mysql数据库进行隔离,即采用单机多实例部署的方式.找了会资料发现用的人也不是太多,一般的生产环境为了充分发挥机器性能都是单机单 ...
随机推荐
- Spring AOP 四大通知
Spring AOP 四大通知 Spring 3.X 以前 1.前置通知,实现 MethodBeforeAdvice 接口,重写 public void before(Method metho ...
- 使用jar 命令生成.jar遇到的问题(绝对路径)
最近学java遇到一个问题:在使用命令行编译jar包的时候 出现了jar包里面的结构是一个电脑的绝对路径(把jar包变成zip格式后看到的) 之所以出现这个问题一个是以为 jar包会自己识别其相对路径 ...
- Android Studio 打包签名发布New Key Store
Key store path:存放路径 Key Alias:别名 Validity(years):有效期 Certificate:证书 First and Last Name: Organizatio ...
- iOS解析数据时Error=3840
1.解析JSon数据格式出错的问题 unescaped control character around character XXXX 和 The data couldn’t be read beca ...
- 【代码笔记】iOS-3个section,每个都有header.
一,效果图: 二,工程目录. 三,代码 RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- apache 虚拟ip
参考 http://blog.sina.com.cn/s/blog_5d8ca1e90100hnpv.html <VirtualHost 127.0.0.1:80> Docume ...
- 7、软件质量工程师要阅读的书籍 - IT软件人员书籍系列文章
软件质量工程师在项目组中的作用不是那么明显,但是它是软件质量的重要度量标准人员.有句话说:软件质量是生产出来的,不是开发出来的.通过软件质量审查,能够对软件项目的代码等质量进行衡量,最起码要能够对代码 ...
- NSString与奇怪的retainCount
话题从sunnyxx的<黑幕背后的Autorelease>开始 文章开头有个小例子 __weak id reference = nil;- (void)viewDidLoad { [sup ...
- 【转发】NPAPI学习(Firefox和Chrome扩展开发 )
NPAPI学习(Firefox和Chrome扩展开发 ) 2011-11-08 14:41:02 by [6yang], 1172 visits, 收藏 | 返回 Firefox和Chrome扩展开发 ...
- IP地址(IPv4)/IPv6地址的正则表达式
原地址:http://pfeishao.blog.163.com/blog/static/18162337020112113130453/ Pv4地址正则表达式:^((25[0-5]|2[0-4]\d ...