Tomcat单机多实例部署实战

来源:互联网 发布:重庆时时彩 遗漏数据 编辑:程序博客网 时间:2024/05/18 00:10

Tomcat单机多实例部署
一、Tomcat概要
Tomcat服务器是一个免费开放源代码的WEB应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍利用,是开发和调试JSP程序的首选。
Tomcat实际上是JSP和servlet的容器,独立的Servlet容器是tomcat的默认模式,当前比较流行的spring框架就是基于servlet做了进一步的封装,所以在tomcat上处理web服务请求是现有互联网企业的首选,但是Tomcat处理静态html能力不如apache服务器,具体Apache服务器不做深入介绍。本文所有的服务都是基于linux(centos)实现的
二、Tomcat基本组成
Tomcat安装
首先需要linux上配置java服务,
这里写图片描述
简单介绍tar包的配置形式。
Tomcat上传到linux指定目录,解压缩,下图为解压之后的形式
这里写图片描述
介绍一下各个文件夹及文件
bin: 主要存放脚本文件,例如比较常用的windows和linux系统中启动和关闭脚本
conf: 主要存放配置文件,其中最重要的两个配置文件是server.xml和web.xml
lib: 主要存放tomcat运行所依赖的包
LICENSE: 版权许可证,软件版权信息及使用范围等信息
logs: 主要存放运行时产生的日志文件,例如catalina.out(曾经掉过一个大坑)、catalina.{date}.log等
NOTICE: 通知信息,一些软件的所属信息和地址什么的
RELEASE-NOTES:发布说明,包含一些版本升级功能点
RUNNING.txt:运行说明,必需的运行环境等信息
temp: 存放tomcat运行时产生的临时文件,例如开启了hibernate缓存的应用程序,会在该目录下生成一些文件
webapps: 部署web应用程序的默认目录,也就是 war 包所在默认目录
work: 主要存放由JSP文件生成的servlet(java文件以及最终编译生成的class文件)
以上为tomcat安装目录,进入到bin目录,然后sh startup.sh就可以启动tomcat服务器了,然后浏览器输入http://localhost:8080/ 访问
那么问题来了,当有三到五个甚至更多的服务应用服务需要部署到同一台服务器上时,同时希望启动或者关闭一个服务时候,又不是影响到其它服务正常运行,那么就需要部署tomcat单机多实例模式了
三、Tomcat部署场景
通常,我们在同一台服务器上对 Tomcat 部署需求可以分为以下几种:单实例单应用,单实例多应用,多实例单应用,多实例多应用。实例的概念可以理解为上面说的一个 Tomcat 目录;
单实例单应用:比较常用的一种方式,只需要把你打好的 war 包丢在 webapps目录下,执行启动 Tomcat 的脚本就行了;
单实例多应用:有两个不同的 Web 项目 war 包,还是只需要丢在webapps目录下,执行启动 Tomcat 的脚本,访问不同项目加上不同的虚拟目录。这种方式要慎用在生产环境,因为重启或挂掉 Tomcat 后会影响另外一个应用的访问。
多实例多应用:多个 Tomcat 部署同一个项目,端口号不同,可以利用 Nginx 这么做负载均衡,当然意义不大。
多实例多应用:多个 Tomcat 部署多个不同的项目。这种模式在服务器资源有限,或者对服务器要求并不是很高的情况下,可以实现多个不同项目部署在同一台服务器上的需求,来实现资源使用的最大化。
我现在只写了tomcat的单机多实例方式,所以借用一下官方的tomcat配置图
这里写图片描述
上图的CATALINA_HOME为tomcat安装路径,CATALINA_BASE为实例所在位置
CATALINA_HOME路径下只需要包含bin和lib目录,而CATALINA_BASE只存放conf、webapps、logs等这些文件,这样部署的好处在于升级方便,配置和安装互不影响,在不影响tomcat实例前提下,替换CATALINA_HOME安装文件
四、Tomcat配置
创建三个目录tomcat_1、tomcat_2、tomcat_3
这里写图片描述
进入到tomcat目录
这里写图片描述
执行命令: mv conf/ webapps/ logs/ temp/ work/ -t ../tomcat_1
此时tomcat_1目录结构如下,start_tomcat.sh和stop_tomcat.sh为后续添加的,此时可忽略
这里写图片描述
同样方式将上述文件复制到tomcat_2、tomcat_3中
五、Tomcat启动、停止脚本
在tomcat_1目录
touch start_tomcat.sh
touch stop_tomcat.sh
编辑脚本
vim start_tomcat.sh
这里写图片描述
脚本内容

!/bin/bash

aPath=pwd
export CATALINA_HOME=/application/apache-tomcat-7.0.79
export CATALINA_BASE=$aPath

echo $CATALINA_BASE

TOMCAT_ID=ps aux |grep "java"|grep "Dcatalina.base=$CATALINA_BASE "|grep -v "grep"|awk '{ print $2}'

if [ -n “TOMCATID];thenechotomcat({TOMCAT_ITOMCAT_ID}) still running now , please shutdown it firest”;
exit 2;
fi

TOMCAT_START_LOG=$CATALINA_HOME/bin/startup.sh

if [ “?=0];thenecho0 aPathstartsucceedelseecho0 aPathstartfailedechoTOMCAT_START_LOG
fi
修改停止脚本
vim stop_tomcat.sh
这里写图片描述
脚本内容

!/bin/bash

apath=pwd
export CATALINA_HOME=/application/apache-tomcat-7.0.79
export CATALINA_BASE=$apath

echo $CATALINA_BASE

TOMCAT_ID=ps aux |grep "java"|grep "[D]catalina.base=$CATALINA_BASE "|awk '{ print $2}'

if [ -n “$TOMCAT_ID” ] ; then
TOMCAT_STOP_LOG=$CATALINA_HOME/bin/shutdown.sh
else
echo “Tomcat instance not found : ${1%/}”
exit

fi

if [ “?=0];thenecho0 apathstopsucceedelseecho0 apathstopfailedechoTOMCAT_STOP_LOG
fi
此时启动和停止脚本创建完成
6、配置server.xml端口
同一个服务器部署不同tomcat服务要设置不同的端口,不然会报端口冲突,我们只需要修改conf/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、tomcat_3得工作目录下即可
分别到tomcat_1、tomcat_2、tomcat_3工作目录,然后sh start_tomcat.sh即可完成启动
验证打开浏览器,输入http://localhost:8080/ http://localhost:8081/ http://localhost:8082/ 验证。

原创粉丝点击