前言
- 很久没有用到tomcat了,因老师需求是springboot项目,打包后是war包,并且部署了多个接口和项目,所以打算系统整理一下,有些地方也借鉴了其他博文,在此表示感谢。
- 一个tomcat下如何部署多个项目?Linux跟windows系统下的步骤都差不多,以下linux系统下部署为例。windows系统下部署同理。
方式一:不修改端口,部署多个项目
清楚tomcat目录结构的应该都知道,项目包是放在webapps目录下的,那能否在同一个tomcat的webapps目录下运行多个不同项目呢?答案是可以的。
- 将多个项目包放入
webapps
文件夹下 修改
conf/server.xml
文件,新增web应用节点
定位到server.xml
文件结束标签之前,新增web
应用节点Context
,一个节点代表一个项目<!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> <!-- 配置web应用 --> <Context docBase="erp" path="/erp" reloadble="true" /> <Context docBase="ningmengban" path="/ningmengban" reloadble="true" /> </Host> </Engine> </Service> </Server>
以上新增
Contet
内容说明:docBase属性
: 指定Web应用的文件路径,可以是绝对路径,也可以给定相对路径path属性
: 指定访问该Web应用的URL入口reloadable
属性: 若这个属性为true,tomcat服务器在运行状态下会监视WEB-INF/classes
和WEB-INF/lib
目录下class文件的改动,如果监测到class文件被更新,服务器会自动重新加载Web应用。注意
:每个项目本身的一些配置文件修改,例如数据库连接信息配置,请自行配置好,这里不做赘述。
另外,以上第2步server.xml中新增节点不是必须的,可以直接进入第4步,也ok。
重启tomcat,浏览器输入访问项目地址
注意:以开发提供的项目部署文档说明中地址为准,去进行访问测试;
浏览器访问第一个项目地址:ip:8080/ningmengban/app/register/regiseter.html
,成功
浏览器访问第二个项目地址:ip:8080/erp/regist
,成功
方式二:修改端口,部署多个项目
我们已经清楚一个webapps下面可多个项目。另外一种思路则是,可否多个webapps,每个webapps下面运行一个项目?答案也是可以的。
tomcat目下复制
webapps
目录,并重命名为webapps1
。
Tomcat下webapps已经部署了一个项目,复制webapps重命名为webapps1,并在该文件夹下删除第一个项目,放第二个项目修改tomcat的
conf/server.xml
文件,设置端口等信息
1)server.xml已有第一个项目的配置信息,现在需要新增第二个项目的配置,在Server节点下,新增Service节点
;第2个Service节点复制第1个Service内容
2)复制后,做如下端口等配置修改<!-- 第二个项目配置 --> <!-- 修改第一处: Catalina 改为 Catalina1--> <Service name="Catalina1"> <!-- 修改第二处: 8080为http访问端口,为避免冲突,修改端口--> <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <!-- 修改第三处: 8009为AJP端口,Apache能通过AJP协议访问Tomcat的8009端口,避免冲突,修改--> <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /> <!-- 修改第四处: Engine节点,name修改为Catalina1--> <Engine name="Catalina1" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <!-- 修改第五处: 修改Host节点,appBase修改为webapps1(自定义命名)--> <Host name="localhost" appBase="webapps1" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service>
以上修改信息说明:
Service的name属性
修改为Catelina1
http协议
访问的Connector port属性修改为8081
AJP协议
访问的Connector port属性修改为8010
Engine的name
属性修改为Catelina1
Host的appBase
属性修改为webapps1
- 重启tomcat,浏览器输入访问项目地址
浏览器访问第一个项目地址:ip:8080/ningmengban/app/register/regiseter.html
,成功
浏览器访问第二个项目地址:ip:8081/erp/regist
,成功