Tomcat 配置多个端口号或多个应用

1、一个应用多个端口号

即一个service配置多个端口,项目可以通过多个端口访问。

修改tomcat-home\conf下的server.xml,在Service下配置多个<Connector>即可。

<Service name="Catalina">
  <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />
  <Connector port="8081" protocol="AJP/1.3" redirectPort="8443" />
  <Connector
    port="8082"
    protocol="HTTP/1.1"
    maxThreads="150"
    minSpareThreads="25"
    maxSpareThreads="75"
    enableLookups="false"
    redirectPort="8443"
    acceptCount="100"
    debug="0"
    connectionTimeout="20000"
    URIEncoding="utf-8"
    disableUploadTimeout="true"
  />
  <Engine defaultHost="localhost" name="Catalina">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
    <Host
      appBase="webapps"
      autoDeploy="true"
      name="localhost"
      unpackWARs="true"
      xmlNamespaceAware="false"
      xmlValidation="false"
    >
    </Host>
  </Engine>
</Service>

 

在这个应用里,可以用8080端口号访问服务,也可以用8081、8082端口号来访问服务; 服务放置的路径由host决定,上例中服务放在webapps下。

即,以下两种方式访问同一个项目:

http://localhost:8081/项目名称

http://localhost:8082/项目名称

 

2、多个应用一个端口号。

host配置多个Context,每个Context可以配置一个应用。

修改tomcat-home\conf下的server.xml,添加多个Context即可

<Service name="Catalina">
  <Executor
    name="tomcatThreadPool"
    namePrefix="catalina-exec-"
    maxThreads="150"
    minSpareThreads="4"
  />

  <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" 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">
      <Valve
        className="org.apache.catalina.valves.AccessLogValve"
        directory="logs"
        prefix="localhost_access_log"
        suffix=".txt"
        pattern='%h %l %u %t "%r" %s %b'
      />

      <!-- docBase:   指定Web应用的文件路径,可以是绝对路径,也可以给定相对路径 -->
      <!-- path:      指定访问该Web应用的URL入口 -->
      <!-- reloadable:若这个属性为true,tomcat服务器在运行状态下会监视WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到class文件被更新,服务器会自动重新加载Web应用。 -->
      <Context path="/" docBase="/www/server/tomcat/webapps/admin2" />
      <Context path="/admin" docBase="/www/server/tomcat/webapps/ROOT/admin" />
    </Host>
  </Engine>
</Service>

项目1:http://localhost:8080

项目2:http://localhost:8081/项目名称

 

3、多个应用多个端口号。

即配置多个service,每个service可以配置多个端口。

修改tomcat-home\conf下的server.xml,添加多个Service即可。

注意Service nameEngine nameappBaseport别忘了修改,以免重复

<Service name="Catalina">
  <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" 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">
      <Valve
        className="org.apache.catalina.valves.AccessLogValve"
        directory="logs"
        prefix="localhost_access_log"
        suffix=".txt"
        pattern='%h %l %u %t "%r" %s %b'
      />

      <Context path="/" docBase="/www/server/tomcat/webapps/ROOT/admin" />
    </Host>
  </Engine>
</Service>

<Service name="Catalina2">
  <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" 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">
      <Valve
        className="org.apache.catalina.valves.AccessLogValve"
        directory="logs"
        prefix="localhost_access_log"
        suffix=".txt"
        pattern='%h %l %u %t "%r" %s %b'
      />

      <Context path="/" docBase="/www/server/tomcat/webapps/ROOT/admin2" />
    </Host>
  </Engine>
</Service>

以上两个service,发布的路径不同,项目分别发布在/webapps/ROOT/admin/webapps/ROOT/admin2下,

访问不同的项目的方法:

http://localhost:8080/项目名称1

http://localhost:8081/项目名称2