tomcat 多实例部署

tomcat 配置多个实例

参考文档

聊聊 Tomcat 的单机多实例 https://www.cnblogs.com/mafly/p/tomcat.html
极客学院 Tomcat 8 权威指南 http://wiki.jikexueyuan.com/project/tomcat/

名词

CATALINA_HOME CATALINA_BASE catalina.bat startup.bat

CATALINA_HOME 指 Tomcat 安装目录,CATALINA_BASE 指实例目录,默认值和 CATALINA_HOME 相同。

CATALINA_HOME 路径下只需要包含 bin 和 lib 目录,而 CATALINA_BASE 只存放 conf、webapps、logs 等这些文件,这样部署的好处在于升级方便,配置及安装文件间互不影响,在不影响 Tomcat 实例的前提下,替换掉 CATALINA_HOME 中的安装文件。

多实例单应用 单实例多应用

生产环境应该使用多实例单应用,而不是单实例多应用。避免 tomcat 重启时对其他应用造成影响。

启动脚本

# startup.bat
set "CATALINA_HOME=D:\chengxu\tomcat\apache-tomcat-7.0.94"
set "CATALINA_BASE=%cd%"
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

call "%EXECUTABLE%" start 

实例目录

# 判断文件是否存在
D:\>if exist d:\qq echo true
true
D:\>if exist "d:\qq" echo true
true
D:\>if exist ""d:\qq"" echo true
true
D:\>help start
启动一个单独的窗口以运行指定的程序或命令。

# 用记事本打开文本文件
D:\>start notepad d:\00\a.txt

setlocal 命令

要点:
1. 在批处理文件之外使用无效。
2. setlocal 之后执行的环境改变都是局部的,在遇到 endlocal 或者批处理文件结束时,将环境恢复到 setlocal 之前的状态。
3. setlocal 可以嵌套。也就是在一个批处理文件中可以使用多个 setlocal 命令。

D:\00>setlocal /?
开始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后所做的环境改动只限于批处理文件。要还原原先的设置,必须执
行 ENDLOCAL。达到批处理文件结尾时,对于该批处理文件的每个尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行。

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc772046(v=ws.11)

windows 官方文档 https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc772046(v=ws.11)

D:\00>call setlocaldemo.bat

D:\00>rem *******Begin Comment**************

D:\00>rem setlocal 命令测试

D:\00>rem *******End Comment**************
测试
setlocal测试
测试
rem setlocaldemo.bat 文件
rem *******Begin Comment**************
rem setlocal 命令测试
rem *******End Comment**************
@echo off
set var=测试
echo %var%
setlocal
set var=setlocal测试
echo %var%
endlocal
echo %var%

延迟环境变量扩展

名词

变量扩展 延迟环境变量扩展 !变量名! %变量名%

参考文档

命令 setlocal enabledelayedexpansion
https://blog.csdn.net/jiacai2050/article/details/15029815

延迟环境变量扩展https://baike.baidu.com/item/%E5%BB%B6%E8%BF%9F%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E6%89%A9%E5%B1%95/2259702?fr=aladdin

为什么需要延迟环境变量扩展?

修正变量扩展存在问题,一条语句中更新变量后使用的还是更新前的值。

batch解释器的运行机制,一般来说包括如下三个步骤:
1.读取一个完整的命令并进行语法检查。
2.将 %变量名% 替换成变量内容,即变量扩展。
3.执行这个命令。

问题:导致一条语句中更新变量后使用的还是更新前的值

不启用延迟环境变量扩展

# 文件
@echo off
set foo="helloworld"
if %foo%=="helloworld" (
    set foo="helloubuntu"
    echo !foo!
    echo %foo%
)

D:\00>delayed.bat
!foo!
"helloworld"
# 分析 没有启用延迟变量扩展机制,!变量名! 是不被识别的,存在一条语句中更新变量使用的还是更新前的值的问题。

启用延迟环境变量扩展

# 文件
@echo off
setlocal enabledelayedexpansion
set foo="helloworld"
if %foo%=="helloworld" (
    set foo="helloubuntu"
    echo %foo%
    echo !foo!
    if %foo%=="helloubuntu" echo helloubuntu not delayed
    if !foo!=="helloubuntu" echo helloubuntu enabledelayedexpansion
    set foo="hellocentos"
    echo %foo%
    echo !foo!
    if %foo%=="hellocentos" echo hellocentos not delayed
    if !foo!=="hellocentos" echo hellocentos enabledelayedexpansion
)

D:\>d:\00\delayed2.bat
"helloworld"
"helloubuntu"
helloubuntu enabledelayedexpansion
"helloworld"
"hellocentos"
hellocentos enabledelayedexpansion
# 分析 启动延迟变量扩展机制,%变量名% 仍然有效。 !变量名! 的方式使用变量解决了一条语句中更新变量使用的是更新后的值。

batch 命令行参数

参考文档

bat获取所有的参数 https://www.cnblogs.com/cool-fire/p/5919667.html
# bat默认只能获取到1-9个参数,分别用%1 %2 ... %9引用,如果传给bat的参数大于9个,就必须用shift
# 循环读取命令行参数, 2个标签实现循环。
@echo off
set args=
:setArgs
if "%1"=="" goto :doneSetArgs
set args=%args% %1
shift
goto :setArgs
:doneSetArgs
echo %args%

# 注意事项 set x = 5 和 set x= 5 是完全不一样的。等号右边由空格的将被当成另一个环境变量。
# 注意区分下面3个 set 语句的区别
set x=5
set x= 5
set x = 5

startup.bat 中关键变量

%CATALINA_HOME%\bin\catalina.bat %CMD_LINE_ARGS% %EXECUTABLE%

原文地址:https://www.cnblogs.com/mozq/p/11240167.html

时间: 2024-10-28 10:26:10

tomcat 多实例部署的相关文章

(6) tomcat多实例部署

Tomcat 的基本组成 tomcat的单实例部署见https://www.cnblogs.com/liliyang/p/9742284.html 安装好之后,看下目录结构: [[email protected] tomcat]# ll total 96 drwxr-xr-x 2 root root 4096 Aug 28 00:08 bin drwxr-xr-x 3 root root 198 Oct 5 12:30 conf drwxr-xr-x 2 root root 4096 Aug 2

tomcat 多实例部署脚本

#!/bin/bash PA=ABC.com JA=/JavaWeb TT=/usr/local/tomcat #Add an instance, and make the appropriate settings AIAS () { echo -e "\n" [ ! -d $JA ] && echo "Warning:Not found $JA,Please check " && exit 1 [ ! -d $TT ] &&

Linux下Tomcat多实例部署配置

1.在/export/Domains下创建站点目录a.b.c,在站点目录下创建server1 2.将Tomcat除了Bin之外的配置文件拷贝到a.b.c下 3.创建启动脚本start.sh,停止脚本stop.sh,代码如下: #!/bin/bash export CATALINA_HOME=/export/servers/apache-tomcat-7 export CATALINA_BASE=/export/Domains/brand.jd.com/server1 export CATALIN

Tomcat安装以及多实例部署

1.简介 Tomcat 是 Apache 软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目,  由 Apache.Sun 和其他一些公司及个人共同开发而成.Tomcat 技术先进.性能稳定,而且免费,因而深受 Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的 Web 应用服务器. 端口8080 2.安装 先安装环境变量jdk和apache-tomcat(jdk-8u144-linux-x64.rpm .apache-

CentOS6.6从头到尾部署nginx与tomcat多实例 转

前提条件: 1.需要一个全新的centos系统(本文中用到是centos6.6) 2.vmware虚拟机 3.vmware下安装centos系统,以NAT方式与宿主机相连 4.在centos系统中ping www.baidu.com能ping通,接下来需要联网安装软件 两个tomcat实例部署: 1.从本地上传tomcat到服务器中,如下图所示: 2.在安装软件之前需要先部署一些依赖的包(非常重要呢~嘿嘿),分别列出如下: 安装make:yum -y install gcc automake a

Tomcat单机多实例部署-多项目部署

博文说明[前言]: 本文将通过个人口吻介绍Tomcat单机多实例部署,在目前时间点[2017年8月13号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 本文参考文献及引用文章链接: 1.http://wiki.jikexueyuan.com/project/tomcat/ [Tomcat 8 权威指南-极客学院出品] 2.<Tomcat 权威指南> 2.http://www.cn

Tomcat 单(多)实例部署使用

一.前言 (一).概述 Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台.安全域管理和Tomcat阀等.由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器.但是,不能将 Tomcat 和Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP

tengine反向代理tomcat多实例实现负载均衡

目录 1.引语 2.jdk与tomcat的安装 3.tomcat多实例配置与测试 4.tengine安装与负载均衡配置 5.整体测试 6.思考和优化tomcat配置流程 7.总结 1.引语 有没有这样一种情况,你在一台服务器跑了一个tomcat实例,当有一天你发现不管你怎么优化tomcat,它的并发能力处理能力始终上不去了,而你服务器的硬件资源还有一部份剩余时,这时你就得采用tomcat启用多实例的方式,让剩下的硬件资源也一起利用起来,让用户的请求分摊到多个实例上来处理,这样只要硬件资源允许能大

老大有需求--tomcat多实例运行

原因: 开发之前用的是tomcat7环境,部署的有项目.后来老大让弄一个新项目,需要tomcat1.6.由于两个环境要求部署在一台服务器,而之前环境还要运行,于是tomcat多实例终于派上用场了. 注意事项: 1.软链接要不一样,否则会混淆. 2.环境变量要分开,单独配置. 3.启动文件要指明所需要的jdk和tomcat目录 操作: 略...很简单.