一、应用场景
1.当我们周期性的更新Tomcat程序时 又不想修改放已经放在webapps里面的的web程序或者是conf文件夹下的server.xml文件时,我们需要重定向web应用程序的目录。因为更新Tomcat程序 如果你使用的时安装版程序 一定会把之前的配置文件全都覆盖掉 使用绿色版你不也得把之前的配置文件什么的备份一下或者在新的绿色版程序里直接修改配置文件不是吗?
2.有时我们需要启动多个不同配置(同一个项目不同端口)的tomcat实例,我们需要重定向web应用程序的目录(不会使用重定向之前,我绿色版的tomcat直接复制N份改下端口 这样可行 但感觉不正统)
二、如何重定向
我的开发环境:Tomcat9,jdk1.8,windows10
第一步:在需要分离的tomcat目录下复制conf、logs、webapps、work文件夹到一个重定向的新文件夹下 (强烈建议原Tomcat放置的路径和重定向的文件夹路径不要有中文)
如下图所示 我复制到了一个名为tomcat1的文件夹下
第二步:修改conf文件夹下的server.xml文件
注:修改的目的是为了不与原tomcat的端口冲突 否则重定向的项目无法启动 你可以选择修该原tomcat的server.xml也可以选择重定向后的server.xml文件 目的只有一个 端口不冲突 假设你不启用原tomcat了这一步可以略过
我就不截图了 三个地方(我采用的是端口号+1的修改原则)
<Server port="8005" shutdown="SHUTDOWN"> 改为 <Server port="8006" shutdown="SHUTDOWN">
-----------------------------------------------------------------------------------------------------------------------------------------------------
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
改为 <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
-------------------------------------------------------------------------------------------------------------------------------------------------------
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />改为 <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
--------------------------------------------------------------------------------------------------------------------------------------------------------
改成几随意 只要不和之前的tomcat和系统常用的那几个端口冲突就行
第三步 添加startup.bat文件
新建一个文本文件 复制如下代码到文本文件 并且修改CATALINA_HOME后面那个目录为你原Tomcat放置的目录
set "CATALINA_BASE=%cd%"
set "CATALINA_HOME=E:\tomcat\apache-tomcat-9.0.22"
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
call "%EXECUTABLE%" start
之后文件另存为startup.bat(保存为utf-8格式)并复制到重定向文件夹的根目录下 如图
第四步:双击 startup.bat启动 如果成功启动 则证明分离成功
如果你想启动多个但是不同端口的tomcat 在上述操作完成之后 直接复制重定向的文件夹 想起动几个tomcat就复制几份(注意修改该端口 保证端口不冲突)
参考文献:《Tomcat权威指南》第二版
--------------------------------------------------------------------教程完结-------------------------------------------------------------------------------
我再啰嗦几句 判断是否分离成功的标准 是重定向tomcat启动成功 ,注意并且控制台里显示的目录是你的重定向文件夹的目录(这条很重要)
事情经过:我点startup.bat启动tomcat成功了 但是重定向的目录居然是我原tomcat的目录 这是因为我那个startup.bat文件的编码除了问题 导致启动时找不到我那个重定向目录 然后tomcat自己去找原Tomcat的目录了 检测这个重定向目录的办法就是用cmd打开那个startup.bat文件 他还会显示 TOMCAT_BASE和TOMCAT_HOME的值 前者就是你的重定向目录 观察是否与你重定向目录一致 一致那就是真的分离成功了
重定向就这些东西 如果启动失败那应该是别的问题 可以通过cmd启动startup.bat的方法来看看为什么失败
无外乎端口冲突 脚本编写问题 等等一些低级的问题。