单机单用户基础上, 如何运行多个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 获取系统的联系人

    本文主要介绍android中怎样获取系统的联系人数据 首先打开模拟器 点击联系人图标按钮 说明系统联系人数据库是空的,打开File explorer,找到data/data下面的文件夹: 将conta ...

  2. 转:JQuery.Ajax之错误调试帮助信息

    今天发现一篇讲Ajax比较好的文章,汇总下,作为自己的知识储备. 下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. typ ...

  3. MonoDevelop几个常用的快捷键

    MonoDevelop几个常用的快捷键 CTRL+K  删除光标所在行的该行后面的代码 CTRL + ALT +C  注释/不注释该行 CTRL+ DOWN  像鼠标滚轮一样向下拖 CTRL + UP ...

  4. 面试问题4:C语言预处理包括哪些

    问题描述:C语言 预处理包括哪些操作 C语言的三种预处理包括:宏定义(#define).文件包含(#include).条件编译(#if.#else.#endif). 对于宏定义的介绍: 宏定义必须写在 ...

  5. iis中限制访问某个文件或某个类型的文件配置方法

    Note:此处不是权限设置问题,此处不是权限设置问题,此处不是权限设置问题!只是出于数据或者网络安全,禁止扫描工具直接扫描到某些包含敏感信息的文件,尤其比如日志.配置等 默认ASP.NET已经考虑到了 ...

  6. git之三

    1.status命令与diff命令 前面我们已经成功地添加并提交了一个readme.txt文件,修改readme.txt如下: echo "Git is a distributed vers ...

  7. pentaho cde popup弹出框口

    弹出窗口在pentaho cde里面相对比较容易,不过还是记录一下,以防时间久了,忘记关键参数. 先看一下效果图: 画出自己想要在弹出框展示的图形,把他的HtmlObject设置成弹出窗口,如图: 然 ...

  8. MySQL入门(三)

    写了两篇<MySQL入门>以后我发现,写书的人还是都挺有本事的,起码人家知道怎么编排自己想讲的知识点,我实在是不知道该先说那里后说哪里,那我就想到什么讲什么吧. 一 写SQL 其实我是不想 ...

  9. Linux IPC System V 消息队列

    模型 #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> ftok() //获取key ...

  10. Eclipse RCP实用小技巧

    1.插件Plugin工程的build.properties中增加一行,javacDefaultEncoding.. = UTF 2.插件Plugin工程的Runtime的classpath中加入.