一开始部署多个tomcat ,参考https://blog.csdn.net/qq839177306/article/details/78471058 ,发现这篇博客写的不对,,谨慎一点说就是:至少我没有成功实现. ,按照上面链接操作可能面临的问题:
(1) 启动tomcat2时,发现真实启动的是tomcat1
(2) 启动tomcat2时,回报 Cannot find //bin/setclasspath.sh 的错误,
接下来详细叙述我的搭建过程:
首先:下载apache-tomcat-8.5.37 拷贝到/opt/目录下,复制重命名得到: apache-tomcat-8.5.37-8080 和apache-tomcat-8.5.37-8081 两个tomcat
第二步: 配置环境变量:
#jdk
export JAVA_HOME=/usr/local/lib/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$JAVA_HOME/lib/tools.jar
export PATH=${JAVA_HOME}/bin:$PATH
#tomcat_2
CATALINA_BASE_2=/opt/apache-tomcat-8.5.37-8080
CATALINA_HOME_2=/opt/apache-tomcat-8.5.37-8080
TOMCAT_HOME_2=/opt/apache-tomcat-8.5.37-8080
export CATALINA_BASE_2 CATALINA_HOME_2 TOMCAT_HOME_2
#tomcat_1
CATALINA_BASE_1=/opt/apache-tomcat-8.5.37-8081
CATALINA_HOME_1=/opt/apache-tomcat-8.5.37-8081
TOMCAT_HOME_1=/opt/apache-tomcat-8.5.37-8081
export CATALINA_BASE_1 CATALINA_HOME_1 TOMCAT_HOME_1
第三步:修改监听端口 conf/server.xml
tomcat_2: 针对下面三行修改成 如下形式,,tomcat_2 监听8082端口
<Server port="8007" shutdown="SHUTDOWN">
<Connector port="8082" protocol="HTTP/1.1"
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
tomcat_1: 针对下面三行修改成 如下形式,,tomcat_1 监听8081端口
<Server port="8006" shutdown="SHUTDOWN">
<Connector port="8081" protocol="HTTP/1.1"
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
第四步: 设置 startup.sh, shutdown.sh, catalina.sh
第一个tomcat里start.sh,shutdown.sh加入:
export JAVA_HOME_1=/usr/local/lib/jdk1.8.0_191
export CLASSPATH_1=.:${JAVA_HOME}/lib
export PATH_1=${JAVA_HOME_1}/bin:$PATH
export CATALINA_HOME_1=/opt/apache-tomcat-8.5.37-8081
export CATALINA_BASE_1=/opt/apache-tomcat-8.5.37-8081
第二个tomcat里start.sh,shutdown.sh加入:
export JAVA_HOME_2=/usr/local/lib/jdk1.8.0_191
export CLASSPATH_2=.:${JAVA_HOME_2}/lib
export PATH_2=${JAVA_HOME_2}/bin:$PATH
export CATALINA_HOME_2=/opt/apache-tomcat-8.5.37-8082
export CATALINA_BASE_2=/opt/apache-tomcat-8.5.37-8082
exec "$PRGDIR"/"$EXECUTABLE" start "$@"(注意:一定要上面五句话将放在exec前面,否则无效)
exec "$PRGDIR"/"$EXECUTABLE" start "$@"(注意:一定要上面五句话将放在exec前面,否则无效)
=》此步配置错误的话,经常导致如下错误:
[root@xxxxx bin]# sh startup.sh
/home/xxx/apache-tomcat-8.5.11/bin/catalina.sh: line 120: uname: No such file or directory
/home/xxx/apache-tomcat-8.5.11/bin/catalina.sh: line 141: dirname: No such file or directory
Cannot find //bin/setclasspath.sh
This file is needed to run this program
第五步:设置 catalina.sh 在bin/catalina.sh中第一句有效代码前面插入
tomcat_1:
export JAVA_HOME=$JAVA_HOME_1
export JRE_HOME=$JRE_HOME_1
export CATALINA_BASE=$CATALINA_BASE_1
export CATALINA_HOME=$CATALINA_HOME_1
export CLASSPATH=$CLASSPATH_1
export PATH=$PATH_1
tomcat_2
export JAVA_HOME=$JAVA_HOME_2
export JRE_HOME=$JRE_HOME_2
export CATALINA_BASE=$CATALINA_BASE_2
export CATALINA_HOME=$CATALINA_HOME_2
export CLASSPATH=$CLASSPATH_2
export PATH=$PATH_2
第六步:
(1) 开启防火墙:
http://wiki.ubuntu.org.cn/UFW%E9%98%B2%E7%81%AB%E5%A2%99%E7%AE%80%E5%8D%95%E8%AE%BE%E7%BD%AE
(2)设置阿里云服务器的端口: 快速创建规则
防火墙是服务器自带或安装的,是防护软件,属于被动防护,是在被攻击时才进行防护的;
阿里云的安全组是服务器提供商为这台服务器配置的 ,安全组以安全策略进行防护,属于主动防护,是在未被攻击时做好安全防护。
要开启某一个端口对外网访问,防火墙和安全组都要开放该端口
7: 外网访问: http://公网ip:8080 http://公网ip:80807: 本机测试: curl http://127.0.0.1:8080 curl http://127.0.0.1:8080
8: 另外发现 tomcat 在启动时 耗时 好几分钟: 解决方法:参考 https://blog.csdn.net/u013939884/article/details/72860358 的文末
修改之后,启动速度大幅缩短为1-2秒钟.
一、Start Apache 2 Server /启动apache服务
# /etc/init.d/apache2 start
or
$ sudo /etc/init.d/apache2 start
二、 Restart Apache 2 Server /重启apache服务
# /etc/init.d/apache2 restart
or
$ sudo /etc/init.d/apache2 restart
三、Stop Apache 2 Server /停止apache服务
# /etc/init.d/apache2 stop
or
$ sudo /etc/init.d/apache2 stop
10: nginx负载均衡: 实现tomcat 的负载均衡 参考: https://mp.csdn.net/postedit/85249260