1.前言
最近遇到一个 Tomcat 部署的问题:多个项目均部署在一个 Tomcat 实例上,也就是说一台服务器上只运行一个 Tomcat,而这个 Tomcat 上部署着多个项目,这就意味着只要其中一个项目重新部署需要重启 Tomcat,就会导致其他所有项目也会出现暂时无法访问的状态。
2.准备
- 假设已下载 Apche Tomcat 压缩包,并且已经解压到 D 盘,路径为:D:\apache-tomcat。
- 假设有两个 Web 项目,分别是 project1、project2。
3.配置
1.在 D:\apache-tomcat 下新建 project1、project2 目录(也可以是其他任意目录)。
2.将 D:\apache-tomcat 下的 conf、logs、temp、webapps、work 目录移动到 project1、project2 这两个目录, D:\apache-tomcat 只保留 bin、lib 这两个目录。
3.在两个项目的根目录下创建启动批处理脚本 startup.bat
@echo off SET CATALINA_BASE=%CD% SET CATALINA_HOME=D:\apache-tomcat %CATALINA_HOME%\bin\catalina.bat start
4.在两个项目的根目录下创建服务批处理脚本 service.bat(非必须。将项目的 tomcat 启动程序注册为 windows 服务,桌面上就不会产生一个命令行窗口)
@echo off SET CATALINA_BASE=%CD% SET CATALINA_HOME=D:\apache-tomcat if "%1%" == "install" goto gotInstall if "%1%" == "remove" goto gotRemove :gotInstall %CATALINA_HOME%\bin\service.bat install "%2%" :gotRemove %CATALINA_HOME%\bin\service.bat remove "%2%"
5.修改端口:将 D:\apache-tomcat\project1\conf\server.xml 的 Server port 改为 8001,Connector port 改为 8081
<Server port="8001" shutdown="SHUTDOWN"> <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
6.修改端口:将 D:\apache-tomcat\project2\conf\server.xml 的 Server port 改为 8002,Connector port 改为 8082
<Server port="8002" shutdown="SHUTDOWN"> <Connector port="8082" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
4.部署
将 project1 的项目代码部署到 D:\apache-tomcat\project1\webapps 下, project2 的项目代码部署到 D:\apache-tomcat\project2\webapps 下,配置完后的目录树如下图:
5.运行
分别启动两个项目的 startup.bat ,然后就可以通过 http://localhost:8081、http://localhost:8082 访问对应的项目。
注:service.bat 使用说明
以 project1 为例说明。打开 cmd,切换到 D:\apache-tomcat\project1,输入
- 注册服务
service install tomcat-project1
- 删除服务
service remove tomcat-project1
注册服务完后,即可在 Windows 服务中进行启动、停止等操作。