linux上部署多实列tomcat(分装)

Tomcat 常见的几种部署场景
通常,我们在同一台服务器上对 Tomcat 部署需求可以分为以下几种:单实例单应用,单实例多应用,多实例单应用,多实例多应用。实例的概念可以理解为上面说的一个 Tomcat 目录。

单实例单应用:比较常用的一种方式,只需要把你打好的 war 包丢在 webapps目录下,执行启动 Tomcat 的脚本就行了。
单实例多应用:有两个不同的 Web 项目 war 包,还是只需要丢在webapps目录下,执行启动 Tomcat 的脚本,访问不同项目加上不同的虚拟目录。这种方式要慎用在生产环境,因为重启或挂掉 Tomcat 后会影响另外一个应用的访问。
多实例单应用:多个 Tomcat 部署同一个项目,端口号不同,可以利用 Nginx 这么做负载均衡,当然意义不大。
多实例多应用:多个 Tomcat 部署多个不同的项目。这种模式在服务器资源有限,或者对服务器要求并不是很高的情况下,可以实现多个不同项目部署在同一台服务器上的需求,来实现资源使用的最大化。-
这次其实要说的就是这种方式,但多个 Tomcat 就是简单的复制出一个新的 Tomcat 目录后改一下端口么?这样做也太 Low 了点吧?哈哈,其实并不是低端没技术含量的问题,当你同一台服务器部署了多个不同基于 Tomcat 的 Web 服务时,会迎来下面几个极其现实的问题。

当你需要对数十台 Tomcat 版本进行升级的时候,你需要怎么做?
当你需要针对每一个不同的 Web 服务分配不用的内存时,你需要怎么做?
当你需要启动多台服务器时,你需要怎么做?
当然,好像上面的都不是很重要,注意,划重点,多实例部署最大作用就是最大化利用服务器资源
官方建议如下:

1:清除已安装其他版本的jdk
   rpm -qa | grep jdk
   rpm -e --nodeps jdk
   
   关闭selinux和防火墙:
   systemctl stop iptables;systemctl stop firewalld;setenforce 0
2:安装jdk
   https://blog.csdn.net/zzhlinux911218/article/details/85333152
3:安装tomcat
   cd /opt;wget http://mirrors.aliyun.com/apache/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.tar.gz
   tar -zxf apache-tomcat-8.5.37.tar.gz  
   [root@beiyong opt]# mkdir tomcat-1 tomcat-2
   [root@beiyong opt]# cd apache-tomcat-8.5.37
   [root@beiyong apache-tomcat-8.5.37]# mv conf/ webapps/ temp/ logs/ work/ -t ../tomcat-1
   
   [root@beiyong apache-tomcat-8.5.37]# cd ../tomcat-1
   [root@beiyong tomcat-1]# cp -r * ../tomcat-2
4:到tomcat-1  tomcat-2的同一级目录下,建立启动和停止脚本:
   [root@beiyong tomcat-1]# cd ..
   [root@beiyong opt]# ls
   apache-tomcat-8.5.37  apache-tomcat-8.5.37.tar.gz  tomcat-1  tomcat-2
   [root@beiyong opt]# mkdir tomcat-shell
   [root@beiyong opt]# cd tomcat-shell
5:建立启动脚本:

   vim start-tomcat.sh
#!/bin/bash
export CATALINA_HOME=/opt/apache-tomcat-8.5.37
export CATALINA_BASE=${1%/}

echo $CATALINA_BASE

TOMCAT_ID=`ps aux |grep "java"|grep "Dcatalina.base=$CATALINA_BASE "|grep -v "grep"|awk '{ print $2}'`


if [ -n "$TOMCAT_ID" ] ; then
echo "tomcat(${TOMCAT_ITOMCAT_ID}) still running now , please shutdown it firest";
    exit 2;
fi

TOMCAT_START_LOG=`$CATALINA_HOME/bin/startup.sh`


if [ "$?" = "0" ]; then
    echo "$0 ${1%/} start succeed"
else
    echo "$0 ${1%/} start failed"
    echo $TOMCAT_START_LOG
fi
6:建立停止脚本:

   vim stop-tomcat.sh
#!/bin/bash
export CATALINA_HOME=/opt/apache-tomcat-8.5.37
export CATALINA_BASE=${1%/}

echo $CATALINA_BASE

TOMCAT_ID=`ps aux |grep "java"|grep "[D]catalina.base=$CATALINA_BASE "|awk '{ print $2}'`

if [ -n "$TOMCAT_ID" ] ; then
TOMCAT_STOP_LOG=`$CATALINA_HOME/bin/shutdown.sh`
else
    echo "Tomcat instance not found : ${1%/}"
    exit

fi


if [ "$?" = "0" ]; then
    echo "$0 ${1%/} stop succeed"
else
    echo "$0 ${1%/} stop failed"
    echo $TOMCAT_STOP_LOG
fi
7:加上可执行权限:
  [root@beiyong opt]# chmod +x start-tomcat.sh stop-tomcat.sh
8:修改端口:

同一个服务器部署不同 Tomcat 要设置不同的端口,不然会报端口冲突,所以我们只需要修改conf/server.xml中的其中前三个端口就行了。但它有四个分别是:
说明:
Server Port:该端口用于监听关闭tomcat的shutdown命令,默认为8005  #--需要修改
Connector Port:该端口用于监听HTTP的请求,默认为8080   #--需要修改
AJP Port:该端口用于监听AJP( Apache JServ Protocol )协议上的请求,通常用于整合Apache Server等其他HTTP服务器,默认为8009   #--需要修改
Redirect Port:重定向端口,出现在Connector配置中,如果该Connector仅支持非SSL的普通http请求,那么该端口会把 https 的请求转发到这个Redirect Port指定的端口,默认为8443
9:修改tomcat-1的端口:

   vim  /opt/tomcat-1/conf/server.xml
22   <Server port="8006" shutdown="SHUTDOWN">   把8005修改成8006
69   <Connector port="8081" protocol="HTTP/1.1"     #把8080修改8081

115  <!-- Define an AJP 1.3 Connector on port 8009 -->
116  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  #把8009改成8010
10:修改tomcat-2的端口:

    vim  /opt/tomcat-2/conf/server.xml
22   <Server port="8006" shutdown="SHUTDOWN">   把8005修改成8007
69   <Connector port="8081" protocol="HTTP/1.1"     #把8080修改8082

115  <!-- Define an AJP 1.3 Connector on port 8009 -->
116  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  #把8009改成8011
11:建立tomcat-1的web首页文件:(等下用来验证web页面的)
    
	vim /opt/tomcat-1/webapps/ROOT/index.html
<html>
<title>Tomcat-1</title>
<body>
    Hello Mafly! from Tomcat-1
</body>
</html>
12:建立tomcat-2的web首页文件:(等下用来验证web页面的)

    vim /opt/tomcat-2/webapps/ROOT/index.html
<html>
<title>Tomcat-2</title>
<body>
    Hello Mafly! from Tomcat-2
</body>
</html>
13:启动tomcat-1服务:
[root@beiyong tomcat-shell]# ./start-tomcat.sh /opt/tomcat-1
/opt/tomcat-1
./start-tomcat.sh /opt/tomcat-1 start succeed

查看tomcat-1服务进程:
[root@beiyong tomcat-shell]# ps -ef | grep tomcat-1
root      14183      1 56 17:44 pts/2    00:00:02 /usr/java/jdk1.8.0_201/bin/java -Djava.util.logging.config.file=/opt/tomcat-1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /opt/apache-tomcat-8.5.37/bin/bootstrap.jar:/opt/apache-tomcat-8.5.37/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat-1 -Dcatalina.home=/opt/apache-tomcat-8.5.37 -Djava.io.tmpdir=/opt/tomcat-1/temp org.apache.catalina.startup.Bootstrap start
root      14227  13627  0 17:44 pts/2    00:00:00 grep --color=auto tomcat-1
14:启动tomcat-2服务:
[root@beiyong tomcat-shell]# ./start-tomcat.sh /opt/tomcat-2
/opt/tomcat-2
./start-tomcat.sh /opt/tomcat-2 start succeed

查看tomcat-2服务进程:
[root@beiyong tomcat-shell]# ps -ef | grep tomcat-2
root      13985      1  0 17:39 pts/2    00:00:03 /usr/java/jdk1.8.0_201/bin/java -Djava.util.logging.config.file=/opt/tomcat-2/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /opt/apache-tomcat-8.5.37/bin/bootstrap.jar:/opt/apache-tomcat-8.5.37/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat-2 -Dcatalina.home=/opt/apache-tomcat-8.5.37 -Djava.io.tmpdir=/opt/tomcat-2/temp org.apache.catalina.startup.Bootstrap start
root      14229  13627  0 17:44 pts/2    00:00:00 grep --color=auto tomcat-2
15:访问web端验证:
访问   http://ip:8081
访问   http://ip:8082

为了更方便的启动:

16:创建tomcat1的启动和停止脚本:

    vim /usr/bin/tomcat1-8081
#!/bin/bash

case $1 in

start)
        bash /opt/tomcat-shell/start-tomcat.sh /opt/tomcat-1
        ;;
stop)
        bash /opt/tomcat-shell/stop-tomcat.sh /opt/tomcat-1
        ;;
restart)
        bash /opt/tomcat-shell/stop-tomcat.sh /opt/tomcat-1
        bash /opt/tomcat-shell/start-tomcat.sh /opt/tomcat-1        
        ;;
*)
        echo "(start|stop|restart)"
        ;;
esac
加上可执行权限:

   chmod +x /usr/bin/tomcat1-8081
使用如下:
[root@beiyong bin]# tomcat1-8081 stop
/opt/tomcat-1
/opt/tomcat-shell/stop-tomcat.sh /opt/tomcat-1 stop succeed

[root@beiyong bin]# tomcat1-8081 start
/opt/tomcat-1
/opt/tomcat-shell/start-tomcat.sh /opt/tomcat-1 start succeed

[root@beiyong bin]# tomcat1-8081 restart
/opt/tomcat-1
/opt/tomcat-shell/stop-tomcat.sh /opt/tomcat-1 stop succeed
/opt/tomcat-1
/opt/tomcat-shell/start-tomcat.sh /opt/tomcat-1 start succeed
为了更方便的启动:

17:创建tomcat2的启动和停止脚本:

    vim /usr/bin/tomcat2-8082
#!/bin/bash

case $1 in

start)
        bash /opt/tomcat-shell/start-tomcat.sh /opt/tomcat-2
        ;;
stop)
        bash /opt/tomcat-shell/stop-tomcat.sh /opt/tomcat-2
        ;;
restart)
        bash /opt/tomcat-shell/stop-tomcat.sh /opt/tomcat-2
        bash /opt/tomcat-shell/start-tomcat.sh /opt/tomcat-2
        ;;
*)
        echo "(start|stop|restart)"
        ;;
esac
加上可执行权限:
chmod +x /usr/bin/tomcat2-8082
使用如下:
[root@beiyong bin]# tomcat2-8082 stop
/opt/tomcat-2
/opt/tomcat-shell/stop-tomcat.sh /opt/tomcat-2 stop succeed

[root@beiyong bin]# tomcat2-8082 start
/opt/tomcat-2
/opt/tomcat-shell/start-tomcat.sh /opt/tomcat-2 start succeed

[root@beiyong bin]# tomcat2-8082 restart
/opt/tomcat-2
/opt/tomcat-shell/stop-tomcat.sh /opt/tomcat-2 stop succeed
/opt/tomcat-2
/opt/tomcat-shell/start-tomcat.sh /opt/tomcat-2 start succeed

猜你喜欢

转载自blog.csdn.net/zzhlinux911218/article/details/86735496
今日推荐