单机单用户基础上, 如何运行多个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 下拉列表框、文本框、菜单

    1.下拉列表框(Spinner) 项目布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andr ...

  2. Android源码笔记——Camera系统架构

    Camera的架构与Android系统的整体架构保持一致,如下图所示,本文主要从以下四个方面对其进行说明. Framework:Camera.java Android Runtime:android_ ...

  3. E-R图的基础练习

    第1题: 设有商店和顾客两个实体,“商店”有属性:商店编号.商店名.地址.电话,“顾客”有属性:顾客编号.姓名.地址.年龄.性别.假设一个商店有多个顾客购物,一个顾客可以到多个商店购物,顾客每次去商店 ...

  4. 最新中国菜刀caidao-20160620下载和说明

    0x00 中国制造, 黑客之刀 中国菜刀是中国安全圈内使用非常广泛的一款Webshell管理工具,此次老兵大牛进行了更新,界面更加优美,功能更加丰富,有图有真相! 0x01 验证 此次更新还自带了官网 ...

  5. xxx is not in the sudoers file.This incident will be reported.的解决方法 (一般用户不能执行sudo)

    1.切换到root用户下 2.添加sudo文件的写权限,命令是:chmod u+w /etc/sudoers 3.编辑sudoers文件vi /etc/sudoers找到这行 root ALL=(AL ...

  6. Apache的Order Allow,Deny 详解

    Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用来控制目录和文件的访问授权. 所以,最常用的是: O ...

  7. PHP curl https访问问题

    PHP curl https访问问题,原代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /* @String url URL地址  * @Array data P ...

  8. Oracle索引梳理系列(三)- Oracle索引种类之反向索引

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  9. java 读写word java 动态写入 模板文件

    import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import ja ...

  10. Storm系列(三):创建Maven项目打包提交wordcount到Storm集群

    在上一篇博客中,我们通过Storm.Net.Adapter创建了一个使用Csharp编写的Storm Topology - wordcount.本文将介绍如何编写Java端的程序以及如何发布到测试的S ...