设为首页 收藏本站
查看: 1004|回复: 0

[经验分享] 解析同一系统安装RPM包的tomcat与压缩包tomact同时使用问题

[复制链接]

尚未签到

发表于 2018-12-5 06:25:54 | 显示全部楼层 |阅读模式
  大部分朋友在使用tomcat的时候,常用的功能是在一个tomcat中为不同的应用设置多个访问路径,然后修改不同的访问端口,比如初始化端口是8080,那么另一个应用使用8081,其他的依次类推,只要做到每个应用的端口号不重复就行。
  

  但是本人在实际环境中遇到如下的问题,需要在一个系统上面同时安装两个不同“渠道”的tomcat,一个rpm包的tomcat以及一个zip形式的tomcat压缩包,结果发现出问题了,只能其中一个tomact可以启动,谁先启动,谁就是“老大”,第二个启动的tomcat就一直启动失败。
  

  日志文件等下分析,先说说我为什么会遇到这样的问题,为什么必须要安装两个不同“渠道”的tomcat,OK,问题背景是这样的: 我这边需要实施的项目架构是cloudstack+kvm,在cloudstack之上,我们有一个JAVA应用,用于调用cloudstack的API,用户使用的时候仅仅需要操作我们的上层JAVA应用即可,那么安装过cloudstack的朋友们知道,安装cloudstack-management跟cloudstack-agent最简便的方式就是通过配置Cloudstack的RPM包YUM源,然后直接通过yum install安装即可,在安装cloudstack-management的同时,系统也会安装操作系统自带的tomcat6包,于是,解释了我们为什么要安装rpm的tomcat包,那么我们还有个上层的JAVA应用怎么部署,weblogic or tomcat? 当然都行,但是从简便性来说,tomcat是最佳的选择,weblogic除了安装较为繁琐,还需要创建domain,配置数据源,发布JAVA包等一系列步骤,tomcat相比而言,肯定简便很多,但是安装cloudstack-management的时候安装的tomcat包已经被cloudstack做了很多定制化配置,所以,如果我们想要发布新的JAVA应用,从维护角度去看,尽量不要去动原有的tomcat配置,于是,我们选择重新安装一个tomcat软件,从源码压缩包解压即可,为了最大程度的划分界限,新的JAVA应用,jdk程序我们也不选择已经安装好的openjdk,而是选择oracle jdk解压安装【关于tomcat跟jdk的安装,非常简单,故本文不做过多说明】。
  Tomcat路径: /usr/local/jdk1.6/
  JDK路径:    /usr/local/jdk1.6
  我们对新的tomcat配置文件做一些修改,告知其使用的jdk是新的oracle jdk
[root@clovemzone ~]# cat /usr/local/tomcat6.0/bin/catalina.sh  |grep -v "#" |grep JAVA_HOME |head -n 2
JAVA_HOME=/usr/local/jdk1.6
JRE_HOME=$JAVA_HOME/jre  修改应用监听端口,从8080 修改为10801 ,修改端口的时候,查看/etc/services中,尽量自定义该文件中未定义的端口号,当然范围也在1-65535之内
[root@clovemzone ~]# vim /usr/local/tomcat6.0/conf/server.xml
18005
  8009 ==> 18009
  修改完成,保存/usr/local/tomcat6.0/conf/server.xml。再次启动源码包的tomcat
[root@clovemzone bin]# ./startup.sh  //重新启动tomcat服务
Using CATALINA_BASE:   /usr/local/tomcat6.0
Using CATALINA_HOME:   /usr/local/tomcat6.0
Using CATALINA_TMPDIR: /usr/local/tomcat6.0/temp
Using JRE_HOME:       /usr/local/jdk1.6/jre
[root@clovemzone bin]# ps -ef |grep java
tomcat   21698     1  0 13:18 ?        00:00:03 /usr/lib/jvm/jre/bin/java -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory -classpath :/usr/share/tomcat6/bin/bootstrap.jar:/usr/share/tomcat6/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar -Dcatalina.base=/usr/share/tomcat6 -Dcatalina.home=/usr/share/tomcat6 -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat6/temp -Djava.util.logging.config.file=/usr/share/tomcat6/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start
root     24200     1 68 14:20 pts/3    00:00:02 /usr/local/jdk1.6/jre/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/usr/local/tomcat6.0/conf/logging.properties -Djava.endorsed.dirs=/usr/local/tomcat6.0/endorsed -classpath :/usr/local/tomcat6.0/bin/bootstrap.jar:/usr/local/tomcat6.0/bin/commons-logging-api.jar -Dcatalina.base=/usr/local/tomcat6.0 -Dcatalina.home=/usr/local/tomcat6.0 -Djava.io.tmpdir=/usr/local/tomcat6.0/temp org.apache.catalina.startup.Bootstrap start
root     24222 21016  0 14:20 pts/3    00:00:00 grep java
[root@clovemzone bin]# lsof -i:18080
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    24200 root   29u  IPv6 112921      0t0  TCP *:18080 (LISTEN)
[root@clovemzone bin]# netstat  -nltup |grep java
tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN      21698/java         
tcp        0      0 :::8009                     :::*                        LISTEN      21698/java         
tcp        0      0 :::8080                     :::*                        LISTEN      21698/java         
tcp        0      0 ::ffff:127.0.0.1:18005      :::*                        LISTEN      24200/java         
tcp        0      0 :::18009                    :::*                        LISTEN      24200/java         
tcp        0      0 :::18080                    :::*                        LISTEN      24200/java  再次查看java进行,查看系统监听的java进程端口,发现两个tomcat实例已经可以“共存”了。
  

  结论:
  还是端口惹的祸!
  很多朋友看到这里会郁闷,那干嘛一开始不修改所有的端口呢?
  其实,我想表达的是在日志文件不是非常明确的情况下面,更多的需要我们通过自己的经验以及不断尝试才能把问题解决,有的时候,不经意间解决了问题其实也是一种思考的过程!
  希望能够帮到大家,不仅问题的答案,而是一种过程!
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-643343-1-1.html 上篇帖子: Tomcat集群技术部署文档 下篇帖子: 史上最全最正确的zabbix监控tomcat的方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表