系统版本:centos7.8 | tomcat版本:9.0.52
-
部署多个tomcat如何配置
-
tomcat配置https请求
多个tomcat配置开机自启动请参考我这篇文章https://blog.csdn.net/XZQ1969/article/details/122297253
1. 部署多个tomcat如何配置
-
应用场景:两个javaweb项目打成war包分别部署在两个tomcat里面,在同一服务器启动项目访问。
-
tomcat1配置如下
<?xml version="1.0" encoding="UTF-8"?> <Server port="8015" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8088" protocol="HTTP/1.1" connectionTimeout="20000" maxHttpHeaderSize="81920" relaxedQueryChars="[]{}^\`"<>" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <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"> <Context path="" docBase="/var/local/tomcat1/webapps/war1" reloadable="true" debug="0"/> <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> </Server>
-
tomcat2配置如下
<?xml version="1.0" encoding="UTF-8"?> <Server port="8025" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8077" protocol="HTTP/1.1" connectionTimeout="20000" maxHttpHeaderSize="81920" relaxedQueryChars="[]{}^\`"<>" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <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"> <Context path="" docBase="/var/local/tomcat2/webapps/war2" reloadable="true" debug="0"/> <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> </Server>
-
tomcat1:http://ip:8088/
-
tomcat2 : http://ip:8077/
2. tomcat配置https请求
-
应用场景:项目接口支持https访问(这种配置方式不会禁用原来的http请求,而是同时支持http和https)
-
配置https请求需要先有证书,我是用jdk自己生成:
-
tomcat1配置如下
<?xml version="1.0" encoding="UTF-8"?> <Server port="8015" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8088" protocol="HTTP/1.1" connectionTimeout="20000" maxHttpHeaderSize="81920" relaxedQueryChars="[]{}^\`"<>" redirectPort="8443" /> <!-- 配置 https支持--> <Connector port="8449" protocol="org.apache.coyote.http11.Http11NioProtocol" relaxedQueryChars="[]{}^\`"<>" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/var/local/keystore/tomcat.keystore" keystorePass="123456" /> <Engine name="Catalina" defaultHost="localhost"> <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"> <Context path="" docBase="/var/local/tomcat1/webapps/war1" reloadable="true" debug="0"/> <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> </Server>
-
tomcat2配置如下
<?xml version="1.0" encoding="UTF-8"?> <Server port="8025" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8077" protocol="HTTP/1.1" connectionTimeout="20000" maxHttpHeaderSize="81920" relaxedQueryChars="[]{}^\`"<>" redirectPort="8443" /> <!-- 配置 https支持--> <Connector port="8447" protocol="org.apache.coyote.http11.Http11NioProtocol" relaxedQueryChars="[]{}^\`"<>" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/var/local/keystore/tomcat.keystore" keystorePass="123456" /> <Engine name="Catalina" defaultHost="localhost"> <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"> <Context path="" docBase="/var/local/tomcat2/webapps/war2" reloadable="true" debug="0"/> <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> </Server>
-
keystoreFile="/var/local/cas/keystore/cas.keystore" keystorePass="123456" /> 上述配置中,keystoreFile是证书生成后存放的路径, keystorePass为生成证书时你自己设置的证书密码
-
tomcat1:https://ip:8449/
-
tomcat2 : https://ip:8447/
-
注:(如果tomcat启动后日志中中文乱码,可以我们来到tomcat目录的conf子目录中,找到一个名为 "logging.properties" 的文件,打开这个文本文件,找到如下配置项:
java.util.logging.ConsoleHandler.encoding = UTF-8
将 UTF-8 修改为 GBK,修改后的效果为:
java.util.logging.ConsoleHandler.encoding = GBK
保存后,重启tomcat!)