码迷,mamicode.com
首页 > 系统相关 > 详细

Linux 下启动两个tomcat

时间:2018-04-12 17:08:40      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:作用   容器   不清楚   ali   来讲   tomcat   alt   .sh   方案   

 

闲来无事学习nginx,想要配置个load balance。可是先决条件是:得有两个web容器。两个电脑是不用想了。只能想办法在一个机器上启动两个tomcat。原以为挺简单的,只要改改port就好了。谁知单单改port压根不会成功。网上找了很多解决方案,要么繁杂的要死,要么说的云里雾里的。于是决定结合网上的说法和自己的想法,重新写一个方案。

先说解决方案吧。(我用的是tomcat-7.0.62,安装的路径是/usr/local/apache-tomcat-7.0.62)

1.先把原来的tomcat复制一份,地址随便放,文件名随便取。我复制为 /usr/local/apache-tomcat-7.0.62-copy

2.修改/usr/local/apache-tomcat-7.0.62-copy/conf/server.xml,用意是不要让端口与原来的冲突了

  在此server.xml中一共有三个port,下面列出的是默认的设置。这三个端口都要修改。(我一开始的想法是只要简单的后面加个1,变成80051,80801,80091,反正只要端口最大不超过65535就行了。结果报什么端口out of range 错误。。。。。)好吧,那就分别改为8006,8081,8010好了

技术分享图片
1 <!--这个好像是关闭的端口,具体作用不清楚-->
2 <Server port="8005" shutdown="SHUTDOWN">
3  
4 <!--这个应该知道是什么端口吧-->
5  <Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000“ redirectPort="8443" />
6  
7  
8  <!--注释上说是什么AJP 1.3的连接端口,具体什么作用还是不清出-->
9  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
技术分享图片

 

3.在~/.bash_profile中添加下面两个。 

1 export CATALINA_BASE2=/usr/local/apache-tomcat-7.0.62-copy
2 export CATALINA_HOME2=/usr/local/apache-tomcat-7.0.62-copy

修改完成后用命令 source ~/.bash_profile使新配置的环境变量生效

 可以看到这两行的作用是添加环境变量,但是添加环境变量的方法并不只这一种。所以无论用什么方法,达到添加这两个环境变量的目的就行了。

4.修改/usr/local/apache-tomcat-7.0.62-copy//bin/catalina.sh, 在开头的位置添加下面绿色的两行。(差不多就是在catalina.sh开始的位置)

 

技术分享图片
 1 # resolve links - $0 may be a softlink
 2 PRG="$0"
 3 
 4 while [ -h "$PRG" ]; do
 5   ls=`ls -ld "$PRG"`
 6   link=`expr "$ls" : ‘.*-> \(.*\)$‘`
 7   if expr "$link" : ‘/.*‘ > /dev/null; then
 8     PRG="$link"
 9   else
10     PRG=`dirname "$PRG"`/"$link"
11   fi
12 done
13 
14 # Get standard environment variables
15 PRGDIR=`dirname "$PRG"`
16 
17 # Only set CATALINA_HOME if not already set
18 [ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
19 
20 # Copy CATALINA_BASE from CATALINA_HOME if not already set
21 [ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"
22 
23 CATALINA_HOME=$CATALINA_HOME2
24 CATALINA_BASE=$CATALINA_BASE2
技术分享图片

 

5. 分别启动两个tomcat就好了。

 

好吧,下面的东西是我自己看catalina.sh的解释,与启动两个tomcat没有任何关系。

上面第四步的那一段代码的目的就是取得 CATALINA_HOME和CATALINA_BASE。

  一开始这一段是说如果sh是链接的话的处理方法。$0就是bash文件的名称。

技术分享图片
 1 # resolve links - $0 may be a softlink
 2 PRG="$0"
 3 
 4 while [ -h "$PRG" ]; do
 5   ls=`ls -ld "$PRG"`
 6   link=`expr "$ls" : ‘.*-> \(.*\)$‘`
 7   if expr "$link" : ‘/.*‘ > /dev/null; then
 8     PRG="$link"
 9   else
10     PRG=`dirname "$PRG"`/"$link"
11   fi
12 done
技术分享图片

 

 下面有一句就是取得bash所在的文件夹。

1 # Get standard environment variables
2 PRGDIR=`dirname "$PRG"`

 

再下面注释写的很清楚了,如果我们配置了CATALINA_HOME的环境变量,那就什么都不干,如果没有配置,那就让变量CATALINE_HOME指向 PRGIDR的父目录,实际就是tomcat安装目录。

1 # Only set CATALINA_HOME if not already set
2 [ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
3 
4 # Copy CATALINA_BASE from CATALINA_HOME if not already set
5 [ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"

 

我们的修改的意思是不管前面CATALINA_HOME和CATALINA_BASE设置为了什么,反正最后我一刀切,全设置为我想要的,即如下的代码

1 CATALINA_HOME=$CATALINA_HOME2
2 CATALINA_BASE=$CATALINA_BASE2

 

 

下面还有一个说明:

理论上来讲上面的配置就可以了。可是有一点小小的瑕疵:假设环境变量$CATALINA_HOME2和$CATALINA_BASE2是设在root用户下的,那么tomcat救只能用root用户启动了,别的用户根本启动不了。

并且,如果某个不知道catalina.sh已经被修改过的人复制apache-tomcat-7.0.62-copy到另外的地方,比如另一台服务器,他会发现tomcat启动不了了。。。其实catalina.sh这么写更好,即把绿色的那两行往前移一移就好了

技术分享图片
 1 # resolve links - $0 may be a softlink
 2 PRG="$0"
 3 
 4 while [ -h "$PRG" ]; do
 5   ls=`ls -ld "$PRG"`
 6   link=`expr "$ls" : ‘.*-> \(.*\)$‘`
 7   if expr "$link" : ‘/.*‘ > /dev/null; then
 8     PRG="$link"
 9   else
10     PRG=`dirname "$PRG"`/"$link"
11   fi
12 done
13 
14 # Get standard environment variables
15 PRGDIR=`dirname "$PRG"`
16 
17 CATALINA_HOME=$CATALINA_HOME2
18 CATALINA_BASE=$CATALINA_BASE2
19 
20 # Only set CATALINA_HOME if not already set
21 [ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
22 
23 # Copy CATALINA_BASE from CATALINA_HOME if not already set
24 [ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"

Linux 下启动两个tomcat

标签:作用   容器   不清楚   ali   来讲   tomcat   alt   .sh   方案   

原文地址:https://www.cnblogs.com/javaboy2018/p/8808846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!