有时候我们经常会有这种需求,在同一台 Linux 服务器上配置两个或多个 Tomcat ,一个作为测试环境,一个作为生产环境。要想满足这一需求,修改 Tomcat server.xml 配置文件,让多个 Tomcat 使用不同的端口即可。下面以配置两个 Tomcat 为例来说明。

首先,安装 Tomcat ,这在之前的一篇博客中已经详细介绍过,博客地址如下:

http://xitongjiagoushi.blog.51cto.com/9975742/1623330

在这里我们假设将 Tomcat 安装在 /opt/tomcat 目录下,复制一份,名称可以自定义,以 tomcat_test 为例:

[root@localhostopt]# /bin/cp -r tomcat tomcat_test

此时 tomcat/conf/server.xml tomcat_test/conf/server.xml内容当然是相同啦,使用的端口号也相同,想要同时运行肯定是不可能的,现在保持 tomcat/conf/server.xml 不变,修改 tomcat_test/conf/server.xml

[root@localhostopt]# vim tomcat_test/conf/server.xml

下面列出要修改的几处内容,其中第一部分为修改前,第二部分为修改后,修改后的部分以黑体及下划线表示:

1.修改监听关闭 Tomcat 请求的端口:

<Server port="8006" shutdown="SHUTDOWN">

<Server port="18006" shutdown="SHUTDOWN">

2.修改监听来自客户端请求的端口:

<Connector

port="9090"

      executor="tomcatThreadPool"

      protocol="HTTP/1.1"

      acceptCount="35000"

      enableLookups="false"

      connectionTimeout="30000"

      acceptorThreadCount="8"

      redirectPort="8443"  URIEncoding="UTF-8"/>

  <Connector

      port="9091"

      executor="tomcatThreadPool"

      protocol="HTTP/1.1"

      acceptCount="35000"

      enableLookups="false"

      connectionTimeout="30000"

      acceptorThreadCount="8"

      redirectPort="18443"  URIEncoding="UTF-8"/>

3.修改 AJP 协议连接端口:

<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

<Connector port="18010" protocol="AJP/1.3" redirectPort="18443"/>

 

修改完成后保存退出,即可使两个 tomcat 同时运行。为了使用方便,将 tomcat_test 也配置为服务:

[root@localhost opt]# /bin/cp -p tomcat_test/bin/catalina.sh /etc/init.d/tomcat_test

[root@localhost opt]# vim !$

从第二行开始加入如下配置信息:

# chkconfig: 2345 63 37

# description: tomcat_test server init script

# Source Function Library

. /etc/init.d/functions

JAVA_HOME=/opt/jdk1.8.0_40/

CATALINA_HOME=/opt/tomcat_test

保存退出。这里要特别注意,CATALINA_HOME 要输入当前正在配置 Tomcat 的目录,如果此时我们正在配置第一个 Tomcat,则 CATALINA_HOME 的值为:

CATALINA_HOME=/opt/tomcat

[root@localhost opt]# chmod 755 !$

[root@localhost opt]# chkconfig --add tomcat_test

[root@localhost opt]# chkconfig tomcat_test on

到此服务配置完毕,之后我们就可以使用启动/ 关闭服务的形式来对 Tomcat 进行操作了:

[root@localhost opt]# service tomcat_test start //启动

[root@localhost opt]# service tomcat_test stop //关闭

 

补充: 常用命令 netstat

上述两个 Tomcat 使用的连接端口分别为 9090tomcat)和 9091tomcat_test),使用这些端口的前提是它们并没有被占用。使用 netstat 命令可以查看 Linux 端口的使用情况:

[root@localhost ~]# netstat –antp

举例来说,如果我们想查看 9090 端口是否被占用,则:

[root@localhost ~]# netstat –antp | grep 9090

tcp  0  0  :::9090  :::*  LISTEN  1804/java

即为占用,没有结果即没有被占用。netstat 命令参数:

-a  显示 listening non-listening 所有状态的端口

-n  以数字形式显示端口,不会以默认名称显示。比如, ssh 的默认端口为 22,不使用 -n 参数时在 Local Address 列会显示 localhost:ssh ,使用-n 参数时则显示为 192.168.32.136:22

-t  显示tcp协议。

-p  显示端口使用进程 pid 及进程名称。