linux 部署多个tomcat并配置https支持

系统版本:centos7.8 | tomcat版本:9.0.52


  1. 部署多个tomcat如何配置

  2. 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="[]{}^&#x5c;&#x60;&quot;&lt;&gt;"
                   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 &quot;%r&quot; %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="[]{}^&#x5c;&#x60;&quot;&lt;&gt;"
                   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 &quot;%r&quot; %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="[]{}^&#x5c;&#x60;&quot;&lt;&gt;"
                   redirectPort="8443" />
        <!-- 配置 https支持-->
        <Connector port="8449" protocol="org.apache.coyote.http11.Http11NioProtocol"
                relaxedQueryChars="[]{}^&#x5c;&#x60;&quot;&lt;&gt;"
                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 &quot;%r&quot; %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="[]{}^&#x5c;&#x60;&quot;&lt;&gt;"
                   redirectPort="8443" />
        <!-- 配置 https支持-->
        <Connector port="8447" protocol="org.apache.coyote.http11.Http11NioProtocol"
                relaxedQueryChars="[]{}^&#x5c;&#x60;&quot;&lt;&gt;"
                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 &quot;%r&quot; %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!)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值