设为首页 收藏本站
查看: 564|回复: 0

[经验分享] Tomcat单机多实例部署

[复制链接]

尚未签到

发表于 2018-12-5 09:57:40 | 显示全部楼层 |阅读模式
  博文说明【前言】:

      本文将通过个人口吻介绍Tomcat单机多实例部署,在目前时间点【2017年8月13号】下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容。
  

  本文参考文献及引用文章链接:
  1、http://wiki.jikexueyuan.com/project/tomcat/ 【Tomcat 8 权威指南-极客学院出品】
  2、《Tomcat 权威指南》
  2、http://www.cnblogs.com/mafly/p/tomcat.html
  

  正文:
  
期望实现功能:
1、更新升级:周期性地更新Tomcat,使用最新版的Tomcat
2、统一管理,让Tomcat版本统一,实例的配置统一
3、多个项目使用不同端口号进行区分,并且互相不影响,并且对于bin/、lib/等公共数据共享使用,节约系统资源
4、Tomcat运行多实例,并且web应用放置到Tomcat的安装目录之外的单独目录,便于区分管理
5、对一个项目的停止启动等不会影响到其他项目
  
实现思路:
1、Tomcat运行时,系统会从conf及webapps目录中读取配置文件,并且写入logs、temp和work目录中
2、一些jar文件和class文件需要从公共目录例如lib/中加载,只需要加载一次就可以。
3、为了多个实例能同时运行,每一个Tomcat实例必须有自己的目录集

传统实现方式:简单的复制出一个新的Tomcat目录后改一下端口
缺点:
1、资源浪费,公用资源被多次加载,造成在内存中不必要的重用
2、针对不同web服务做配置能做但是异常麻烦
3、对Tomcat进行版本升级时能做但是异常麻烦,每个目录都需要替换,不必要的大量工作

Tomcat运行机制:
  2个变量:
CATALINA_HOME:Tomcat的安装路径,只需要包含bin/及lib/目录即可
CATALINA_BASE:Tomcat实例所在路径,只需要包含conf、webapps、logs、temp、work目录即可
因此我们可以在不影响Tomcat实例运行的情况下,替换掉$CATALINA_HOME中的文件即可完成升级


具体实施

1、解压安装包
[tomcat@master ~]$ pwd
/home/tomcat
[tomcat@master ~]$ ls
apache-tomcat-8.5.16  apache-tomcat-8.5.16.tar.gz
[tomcat@master ~]$

2、创建实例目录及脚本目录
[tomcat@master ~]$ mkdir tomcat-1 tomcat-2 tomcat-shell
[tomcat@master ~]$ ls
apache-tomcat-8.5.16  apache-tomcat-8.5.16.tar.gz  tomcat-1  tomcat-2  tomcat-shell

3、移动实例所需文件及目录到2个实例目录中
[tomcat@master ~]$ cd apache-tomcat-8.5.16
[tomcat@master apache-tomcat-8.5.16]$ ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
[tomcat@master apache-tomcat-8.5.16]$ mv conf/ webapps/ temp/ logs/ work/ ../tomcat-1
[tomcat@master apache-tomcat-8.5.16]$ cd ..
[tomcat@master ~]$ cp -a tomcat-1/* tomcat-2/

4、新建Tomcat启动、停止脚本
[tomcat@master ~]$ cd tomcat-shell/
  1)启动脚本
[tomcat@master tomcat-shell]$ vim start_tomcat.sh
#!/bin/bash
#description: This script is for start tomcat instance, $1 is the tomcat/web instance directory
#history: 2017/8/13    first release
#author: wang xiaohua
#contact: wxh2673@163.com

source /etc/profile
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

export CATALINA_HOME=/home/tomcat/apache-tomcat-8.5.16
export CATALINA_BASE=${1%/}
export log=$CATALINA_BASE/startup.log
# use %/ is for next grep match
echo $CATALINA_BASE
Tomcat_PID=$(ps aux | grep "java" | grep -v "grep"  | grep "Dcatalina.base=${CATALINA_BASE}"  |awk '{print $2}')

if [ -n "$Tomcat_PID" ];then
    echo "The tomcat instance $CATALINA_BASE is running,please checkout the status";
    exit 1;
fi
/usr/bin/sh $CATALINA_HOME/bin/startup.sh > $log 2>&1

if [ "$?" = 0 ];then
    echo "The tomcat instance $CATALINA_BASE start succeed!!!";
else
    echo "The tomcat instance $CATALINA_BASE start faild!!!"
    tail -f $log
fi

2)停止脚本
[tomcat@master tomcat-shell]$ vim stop_tomcat.sh

#!/bin/bash
#description: This script is for stop tomcat instance, $1 is the tomcat/web instance directory
#history: 2017/8/13    first release
#author: wang xiaohua
#contact: wxh2673@163.com

source /etc/profile
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

export CATALINA_HOME=/home/tomcat/apache-tomcat-8.5.16
export CATALINA_BASE=${1%/}
export log=$CATALINA_BASE/stop.log
# use %/ is for next grep match
echo $CATALINA_BASE
Tomcat_PID=$(ps aux | grep "java" | grep -v "grep"  | grep "Dcatalina.base=${CATALINA_BASE}"  |awk '{print $2}')

if [ -n "$Tomcat_PID" ];then
    /usr/bin/sh $CATALINA_HOME/bin/shutdown.sh > $log 2>&1
else
    echo "The tomcat instance $CATALINA_BASE is not running,please checkout the status"
    exit 1;

fi

if [ "$?" = 0 ];then
    echo "The tomcat instance $CATALINA_BASE stop succeed!!!";
else
    echo "The tomcat instance $CATALINA_BASE stop faild!!!"
    tail -f $log
fi

[tomcat@master tomcat-shell]$ chmod +x start_tomcat.sh  stop_tomcat.sh

3)可以整合到一块,写成函数,添加重启功能,先停止再启动,这里没有写,留给你们发挥。

5、配置server.xml文件,为每个项目设置不同的端口

Server Port:该端口用于监听关闭tomcat的shutdown命令,默认为8005
Connector Port:该端口用于监听HTTP的请求,默认为8080
AJP Port:该端口用于监听AJP( Apache JServ Protocol )协议上的请求,通常用于整合Apache Server等其他HTTP服务器,默认为8009
Redirect Port:重定向端口,出现在Connector配置中,如果该Connector仅支持非SSL的普通http请求,那么该端口会把 https 的请求转发到这个Redirect Port指定的端口,默认为8443;

在这里讲tomcat-2的端口设置为8081,tomcat-1使用默认的8081

[tomcat@master conf]$ pwd
/home/tomcat/tomcat-2/conf
[tomcat@master conf]$ vim server.xml
  
69

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-643491-1-1.html 上篇帖子: tomcat多实例自动化部署脚本优化 下篇帖子: 同一台机器下配置同时运行的多个Tomcat
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表