Tomcat 多实例部署 I

单实例部署的麻烦

掀桌!单实例部署,TMD的每次重启所有项目都被影响!!

单实例部署时,不管是直接放在webapps下,还是增加配置文件./conf/server.xml
中的<host>
,关闭和启动都是所有项目都受到影响 ,特别一些启动时间比较长的项目,等待很艹蛋,更特别的在于如果没有热部署或者热部署失败时,修改一个class或配置文件,重启的效率能让你掀桌!!

多实例的几种方式

1.多Tomcat软件实例
2.增加 CATALINA_BASE
3.其他的先略过不表

Y,多实例不可避免,多实例的两种方式上面说了。

说明:
系统环境:centos6.5
jdk:已安装至/usr/local/jdk1.6.0_45/
tomcat:已经下载解压至/usr/local/tomcat
tomcat所有实例共同的工作目录/data/webapps

先说多Tomcat软件实例

  1. 分别创建tomcat_1和tomcat_2实例
    <pre>mkdir /root/tomcat_instance
    cp -r /usr/local/tomcat /root/tomcat_instance/tomcat_1
    cp -r /usr/local/tomcat /root/tomcat_instance/tomcat_2
    </pre>

  2. 修改tomcat_1的主配置文件server.xml
    只需找到相应代码块修改端口号和appBase路径即可
    <pre>$ vim /root/tomat_instance/tomcat_1/conf/server.xml
    <Server port=”1001″ shutdown=”SHUTDOWN”> #将8005端口改为1001端口
    <Connector port=”1080″ protocol=”HTTP/1.1″ #将8080改为1080
    connectionTimeout=”20000″
    redirectPort=”1443″ /> #将8443改为1443
    <Connector port=”1009″ protocol=”AJP/1.3″ redirectPort=”1443″/> #将8009改为1009,8843改为1443
    <Host name=”localhost” appBase=”/data/webapps” #将appbase路径改为/data/webapps
    unpackWARs=”true” autoDeploy=”true”></pre>

  3. 同理,编辑tomcat_2的主配置文件,修改相应端口

  4. server.xml修改结束后,添加启动启动脚本(tomcat_2同理)
    只需要把catalina.sh脚本复制到/etc/init.d/目录下,并重命名为tomcat7070,然后修改下即可
    <pre>cp /root/tomcat_instance/tomcat_1/bin/catalina.sh /etc/init.d/tomcat_1
    chmod 755 /etc/init.d/tomcat_1
    <p>
    $ vim /etc/init.d/tomcat_1
    CATALINA_HOME=/root/tomcat_instance/tomcat_1
    JAVA_HOME=/usr/local/jdk1.6.0_45/</pre>

到此两个tomcat实例都已经配置完毕,现在我们来启动测试下

5.测试(tomcat_2同理)
<pre>/etc/init.d/tomcat_1 start
netstat -tunlp 查看修改的端口是否存在</pre>

结束。其实这种方法会带来很多麻烦,个人不推荐。
下面看第二种方法

单Tomcat 多实例 ,增加 catalina_base(推荐)

一个实例增加一个 catalina_base ,但只用一个Tomcat软件实体

在Tomcat的目录中,有这么几个子目录:

1.bin
2.lib
3.conf
4.logs
5.temp
6.work
7.webapps

其中 1 bin 和 2 lib 是Tomcat的执行文件和依赖文件,是重要的,标记。
接着 3 conf 是配置文件,也主要,主要,主要(重要的事说3遍)的,标记。
其他 4,5,6,分别是日志,临时,和编译后的工作目录,次要。
最后 7 是我们熟知的,基本刚开始的时候都是用来存放项目,然后使用二级目录访问,可略过。

好,现在说说这个单Tomcat多实例的思路。我们启用tomcat时,所使用的方式一般为:./bin/startup.sh

OK,而实际上它会调用 catalina.sh 这个脚本,而关键的在于这个脚本中有一个配置选项:

CATALINA_BASE
<pre>/# CATALINA_BASE (Optional) Base directory for resolving dynamic portions
/# of a Catalina installation. If not present, resolves to
/# the same directory that CATALINA_HOME points to.</pre>

这个就是用来解决多实例的一个配置, <code>CATALINA_BASE</code>配置项所指定的目录,需要一个<code>conf</code>目录,而<code>conf</code>就包含了配置端口和项目路径。而默认de的<code>CATALINA_BASE</code>指向了Tomcat的根目录。可能还不怎么清楚,要怎么配置<code>CATALINA_BASE</code>?

步骤

有点小绕,看步骤和脚本:
1.解压一个Tomcat,解压至 /usr/local/tomcat
2.建立一个实例对应的目录,如:/data/website/a.org
3.建立一个实例对应的工作目录,如:/data/webapps/a.org
3.将/usr/local/tomcat中的conf目录完整的copy到 a.org 目录
4.编辑conf/server.xml文件修改默认端口,这里步骤同前面的
5.关键:在目录下建立一个脚本,可以如:touch tomcat.sh ,脚本内容如下
<pre>#!/bin/sh

本脚本参考:http://www.ttlsa.com

. /etc/init.d/functions
RETVAL=$?

tomcat实例目录,重要,这个就是指向了含有 conf的实例目录,这个比较重要!在于 export 会将指定的变量临时加入用户变量

export CATALINA_BASE=”$PWD”

export CATALINA_BASE=”/data/website/a.org”

tomcat安装目录,这个指向tomact所在的路径

export CATALINA_HOME=”/usr/local/tomcat”

下面就是用来启动了

case “$1” in
start)
if [ -f $CATALINA_HOME/bin/startup.sh ];then
echo $”Start Tomcat”
$CATALINA_HOME/bin/startup.sh
fi
;;
stop)
if [ -f $CATALINA_HOME/bin/shutdown.sh ];then
$CATALINA_HOME/bin/shutdown.sh
fi
;;
*)
echo $”Usage: $0 {start|stop}”
exit 1
;;
esac
exit $RETVAL</pre>

注意:脚本中的<code>export CATALINA_BASE=”/data/website/a.org”</code>和<code>export CATALINA_HOME=”/usr/local/tomcat”</code>非常重要,尤其是<code>export CATALINA_BASE</code>

这个时候启动这个tomcat.sh 就是相当于启用了这个实例。然后停止时,也不影响其他的实例,前提是,你端口要不一样,如果端口一样,则会影响其他项目。

好吧,貌似跟多Tomcat差不多。唯一的有点就在于看着干净,爽快,而如果想要升级Tomcat,一般来说就升级这个单Tomcat软件主体就OK 了。

最后,在实例的目录中建立其他的目录,如:

1.logs
2.work
3.temp
4.webapps

OK,以上,这个可以基本完成目标了,不过还没达到我想要的理想值,下篇再介绍如何自动化.全自动化脚本实现!

参考资料:
Tomcat多实例部署1
Tomcat多实例部署2

    原文作者:Tianny在杭州
    原文地址: https://www.jianshu.com/p/a06e5b1663ce
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞