在 Tomcat 8 部署多端口项目
一般的部署途径
Tomcat 的部署途径很多,一般有如下几种:
- 直接将 War 包拷贝到 webapps 目录中,然后启动 Tomcat。
- 登陆 Tomcat 管理控制台http://localhost:8080/,输入用户名和密码后便可管理应用并动态发布。
接下来记录一下多端口项目部署的步骤。
多端口项目的部署策略
要想在 Tomcat 上部署不同端口的项目,其实只需要修改 conf 文件夹的 server.xml 即可。在 Server 元素下可以看到 Service 子元素,其中 Connector 的 Port 是默认的 8080。接下来只要创建多个 Service 子元素就行了,修改其中的 port 就可以。
先来看看 8080 端口的 Service 是如何配置的:
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps" 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 属性
- Connector 的 port 属性,也就是端口号
- Engine 的 name 属性
- Host 的 appBase 属性
OK,继续在 8080 这个 Service 的后面,也就是与之为兄弟节点关系的位置注入以下配置代码:
<Service name="Catalina_QueenWeb">
<Connector port="8500" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
<Engine name="Catalina_QueenWeb" defaultHost="localhost">
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapp_QueenWeb" 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 属性值为 Catalina_QueenWeb
- Connector 的 port 属性值为 8500(该端口号可以自由拟定)
- Engine 的 name 属性值为 Catalina_QueenWeb
- Host 的 appBase 属性值为 webapp_QueenWeb
来看一下 Tomcat 内部的文件夹:
可以看到,除了默认的 webapps 文件夹,还有一个新创建的 webapp_QueenWeb,只要把打包好的 War 包直接拷贝进去即可:
最后,启动 Tomcat 服务(startup.bat)即可,同时会发现,这个 War 包会自解压为一个文件夹!