CentOS 7 Linux 安装Tomcat 8 - 同一个软件包启动多个服务实例(咋个办呢 zgbn)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ai_zxc/article/details/79301339

CentOS 7 Linux 安装Tomcat 8 - 同一个软件包启动多个服务实例(咋个办呢 zgbn)

此文章主要介绍一下同一个tomcat程序包启动多个服务实例,虽然在很多时候有些程序员感觉这么做很无聊,但对我这种很会节省磁盘空间的人来说,此方法还是很不错的,而且通过这种方法,升级Tomcat版本也是非常容易的。

话不多说直接上操作。

安装Tomcat

此过程不介绍,大家请看之前的文章吧。
CentOS 7 Linux 安装Tomcat 8(咋个办呢 zgbn)
CentOS 7 Linux 安装Tomcat 8 - JVM内存优化(咋个办呢 zgbn)

配置多个服务实例

闲来看一下配置好的目录,如下图。
这里写图片描述

Tomcat程序包创建软连接

Tomcat安装完成并优化配置后,方便操作配置,为原来程序包创建一个软连接目录。

[root@iZ28sn apache]# ln -s tomcat-8.5.27/ tomcat
[root@iZ28sn apache]# ll
total 12
lrwxrwxrwx 1 root root   14 Feb  9 19:22 tomcat -> tomcat-8.5.27/
drwxr-xr-x 9 www  www  4096 Jan 31 01:23 tomcat-8.5.27

创建多服务实例配置文件

通过安装完成Tomcat程序包进行copy动作,重新命名为tomcat-8180,tomcat-8280,之所以这么做,主要是方便我管理,这里名字代表的意思为:
tomcat-8.5.27:此tomcat服务将使用默认的8080端口对外发布服务(我个人不会开启此服务);
tomcat-8180:此tomcat服务将使用8180端口对外发布服务;
tomcat-8280:此tomcat服务将使用8280端口对外发布服务;
命令:

[root@iZ28sn apache]# cp -r tomcat-8.5.27/ tomcat-8180
[root@iZ28sn apache]# cp -r tomcat-8.5.27/ tomcat-8280

进入tomcat-8180目录下,除下面列出的文件夹外,其他的文件夹全部可以删除掉。

drwxr-x--- 2 www www 4096 Feb  9 19:12 bin
drwx------ 3 www www 4096 Feb  1 01:06 conf
drwxr-x--- 2 www www 4096 Feb  9 19:08 logs
drwxr-x--- 2 www www 4096 Feb  1 01:03 temp
drwxr-x--- 2 www www 4096 Feb  1 01:01 webapps
drwxr-x--- 2 www www 4096 Feb  1 01:01 work

进入/tomcat-8180/bin目录下,删除所有文件。

[root@iZ28sn tomcat-8180]# cd bin/
[root@iZ28sn bin]# rm -rf *
[root@iZ28sn bin]# cd ..

分别进入/tomcat-8180/logs/tomcat-8180/temp/tomcat-8180/webapps/tomcat-8180/work目录下,删除所有文件。

只保留/tomcat-8180/conf目录下的配置文件,并修改配置文件中端口号,我修改的比较直接,我的规则就是按着目录的名字中的8180,将默认的8080发布端口修改为8180,其他的服务端口端部将第二位修改成_1__即可。

[root@iZ28sn conf]# vim server.xml
<?xml version="1.0" encoding="UTF-8"?>

<Server port="8105" 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 executor="tomcatThreadPool" port="8180" redirectPort="8143" protocol="HTTP/1.1"
               connectionTimeout="20000" maxThreads="1000"
                           minSpareThreads="100" maxSpareThreads="1000" acceptCount="1000"
                           minProcessors="100" maxProcessors="1000"
                           disableUploadTimeout="true" enableLookups="false"
                           />

    <Connector port="8109" protocol="AJP/1.3" redirectPort="8143" />

    <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 &quot;%r&quot; %s %b" />
                -->
      </Host>
    </Engine>
  </Service>
</Server>

编写多服务实例启动脚本

其实同一个Tomcat程序包,启动多个服务实例,其原理就是通过启动脚本,来控制tomcat启动的时候加载不同的配置文件。

进入/tomcat-8180/bin目录下,创建脚本文件,并赋予可执行权限。

[root@iZ28sn bin]# vim startup.sh
[root@iZ28sn bin]# chmod +x startup.sh

脚本内容

#!/bin/bash
# 这里执行的是软连接地址,方便以后更换tomcat发行版本
export CATALINA_HOME=/opt/apache/tomcat
export CATALINA_BASE="/opt/apache/tomcat-8180"
export CATALINA_TMPDIR="$CATALINA_BASE/temp"
export CATALINA_PID="$CATALINA_BASE/logs/tomcat.pid"

# 创建logs目录
if [ ! -d "$CATALINA_BASE/logs" ]; then
  mkdir $CATALINA_BASE/logs
fi

# 创建temp目录
if [ ! -d "$CATALINA_BASE/temp" ]; then
  mkdir $CATALINA_BASE/temp
fi

# 调用tomcat启动脚本
case $1 in
    start|stop|run)
    bash $CATALINA_HOME/bin/daemon.sh $1
    echo ""
    echo "CATALINA_HOME=$CATALINA_HOME"
    echo "CATALINA_BASE=$CATALINA_BASE"
    echo "CATALINA_TMPDIR=$CATALINA_TMPDIR"
    echo "CATALINA_PID=$CATALINA_PID"
    echo "Action $CATALINA_BASE $1 end ......"
    echo ""
    ;;
    *)
    echo "usage: [start | stop | run]" 
    ;;
esac

启动tomcat服务实例

启动服务,查看tomcat进程情况。

[root@iZ28sn bin]# ./startup.sh start
[root@iZ28sn bin]# ps -ef | grep tomcat
root      4310     1  0 19:43 ?        00:00:00 jsvc.exec -java-home /usr/lib/jvm/java-1.8.0-openjdk/jre ... -Dcatalina.base=/opt/apache/tomcat-8180 ... org.apache.catalina.startup.Bootstrap
www       4311  4310  6 19:43 ?        00:00:01 jsvc.exec -java-home /usr/lib/jvm/java-1.8.0-openjdk/jre ... -Dcatalina.base=/opt/apache/tomcat-8180 ... org.apache.catalina.startup.Bootstrap
root      4446  3286  0 19:43 pts/2    00:00:00 grep --color=auto tomcat
[root@iZ28sn bin]#

猜你喜欢

转载自blog.csdn.net/ai_zxc/article/details/79301339