• 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	omcatapache-tomcat-7.0.94"
    set "CATALINA_BASE=%cd%"
    set "EXECUTABLE=%CATALINA_HOME%incatalina.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:0a.txt
    

    setlocal 命令

    要点:
    1. 在批处理文件之外使用无效。
    2. setlocal 之后执行的环境改变都是局部的,在遇到 endlocal 或者批处理文件结束时,将环境恢复到 setlocal 之前的状态。
    3. setlocal 可以嵌套。也就是在一个批处理文件中可以使用多个 setlocal 命令。
    
    D:0>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:0>call setlocaldemo.bat
    
    D:0>rem *******Begin Comment**************
    
    D:0>rem setlocal 命令测试
    
    D:0>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:0>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:0delayed2.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%incatalina.bat %CMD_LINE_ARGS% %EXECUTABLE%

  • 相关阅读:
    SLAM+语音机器人DIY系列:(六)SLAM建图与自主避障导航——4.多目标点导航及任务调度
    SLAM+语音机器人DIY系列:(六)SLAM建图与自主避障导航——3.ros-navigation机器人自主避障导航
    SLAM+语音机器人DIY系列:(六)SLAM建图与自主避障导航——2.google-cartographer机器人SLAM建图
    SLAM+语音机器人DIY系列:(六)SLAM建图与自主避障导航——1.在机器人上使用传感器
    SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——7.开机自启动ROS节点
    SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——6.树莓派USB与tty串口号绑定
    SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——5.Android手机端与robot端ROS网络通信
    SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——4.PC端与robot端ROS网络通信
    SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——3.装机后一些实用软件安装和系统设置
    SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——2.安装ros-kinetic
  • 原文地址:https://www.cnblogs.com/mozq/p/11240167.html
Copyright © 2020-2023  润新知