单机单用户基础上, 如何运行多个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部署的更多相关文章

  1. elasticsearch单机多实例环境部署

    elasticsearch的功能,主要用在搜索领域,这里,我来研究这个,也是项目需要,为公司开发了一款CMS系统,网站上的搜索栏功能,我打算采用elasticsearch来实现. elasticsea ...

  2. tomcat单机多实例部署

    最近在面试的过程中,一家公司在面试时提到了有关tomcat单机多实例部署的提问, 正好, 之前使用IntelliJ IDEA 13.1.4这款IDE开发web项目,在开发的过程中,因为有多个web项目 ...

  3. Tomcat学习总结(10)——Tomcat多实例冗余部署

    昨天在跟群友做技术交流的时候,了解到,有很多大公司都是采用了高可用的,分布式的,实例沉余1+台.但是在小公司的同学也很多,他们反映并不是所有公司都有那样的资源来供你调度.往往公司只会给你一台机器,因为 ...

  4. tomcat单机多实例

    catalina.home指向公用信息的位置,就是bin和lib的父目录. catalina.base指向每个Tomcat目录私有信息的位置,就是conf.logs.temp.webapps和work ...

  5. 单机多实例mysq 8.0l部署安装

    单机多实例mysql部署安装 目的需求 在单台虚拟机部署部署多实例mysql,用于配置mysql replication,MHA等. 思路 多实例安装mysql可以参考<源编译MySQL8.0的 ...

  6. 聊聊 Tomcat 的单机多实例

    Tomcat 从何而来? 先说 Tomcat 这一单词解释,如果你不是一个开发者,当然它在美国口语中并非是褒义词:如果你是开发者,那你一定听过 Web 应用服务器.Sun 公司和 Tomcat .如你 ...

  7. Tomcat 的单机多实例配置

    有时候需要在一个服务器上部署多个Tomcat,通过不同的端口进行区分,比如,反向代理.但是不想简单的通过复制Tomcat来实现,这样既不方便以后的升级也不方便管理,那么这时候就需要配置Tomcat的单 ...

  8. 通过Zabbix监控Tomcat单机多实例

    前面已经介绍过Tomcat单机多实例部署,接下来就在他的基础上进行下一步操作:Tomcat多实例监控! Tomcat多实例监控过程和之前的redis多实例原理一样,分为以下4步: 1.获取多实例 2. ...

  9. Mysql 数据库单机多实例部署手记

        最近的研发机器需要部署多个环境,包括数据库.为了管理方便考虑将mysql数据库进行隔离,即采用单机多实例部署的方式.找了会资料发现用的人也不是太多,一般的生产环境为了充分发挥机器性能都是单机单 ...

随机推荐

  1. Android 使用xml序列化器生成xml文件

    在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...

  2. 【代码笔记】iOS-伸缩式动画

    一,效果图. 二,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the ...

  3. android app设计内容

    1.logo-main-模块页: 2.logo页包括:背景.版本号.图标.软件名.blog等内容:

  4. 虚拟机安装 Centos6

    1 虚拟机安装 Centos6 1.1 前期配置 New Virtual Machine———Typical(典型安装) 选择镜像文件. 设置文件名,用户名和密码. 设置系统在虚拟机软件的名称, 设置 ...

  5. php底层运行原理

    http://www.cnblogs.com/phphuaibei/archive/2011/09/13/2174927.html

  6. 在Asp.net MVC使用jqGrid--代码少点再少点

    本示例显示了如何动态生成前端jqGrid代码,一般情况仅一行代码: <%=Html.jqGrid<TestModel>(@"#jqT", "Test&q ...

  7. C#语言基础——结构体和枚举类型

    结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要 ...

  8. 按要求编写Java应用程序。 (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。 创建第

    package com.hanqi.test; public class jidongche { private String chepaihao;//车牌号 private int speed;// ...

  9. android 设置布局横屏竖屏

    只要在AndroidManifest.xml里面配置一下就可以了.在AndroidManifest.xml的activity(需要禁止转向的activity)配置中加入android:screenOr ...

  10. linux线程同步(1)-互斥量

    一.概述                                                   互斥量是线程同步的一种机制,用来保护多线程的共享资源.同一时刻,只允许一个线程对临界区进行 ...