部署在tomcat下面的jenkins启动了多个实例,界面访问报错(代码片段)

author author     2022-11-15     672

关键词:

问题描述:

最近因为机房停电,机器上面的所有服务有出现重启,包括jenkins服务。jenkins在重启之后出现了不能访问,界面报错信息:
技术分享图片

报错说启动了多个实例,点击下面的“Ignore this problem and keep using Jenkins anyway”按钮,可以恢复到原来正常的界面,但是这个报错,不久又会出现。

原因分析

因为jenkins是放在tomcat下面的,查看tomcat进程,发现确实只有一个,端口也没有什么异常:

[[email protected] bin]# ps -ef|grep tomcat
root     21780     1 43 15:15 pts/2    00:00:12 /usr/local/jdk/bin/java -Djava.util.logging.config.file=/usr/local/apache-tomcat-8.0.48/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -classpath /usr/local/apache-tomcat-8.0.48/bin/bootstrap.jar:/usr/local/apache-tomcat-8.0.48/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apache-tomcat-8.0.48 -Dcatalina.home=/usr/local/apache-tomcat-8.0.48 -Djava.io.tmpdir=/usr/local/apache-tomcat-8.0.48/temp org.apache.catalina.startup.Bootstrap start
root     12245  7771  0 15:16 pts/2    00:00:00 grep --color=auto tomcat
[[email protected] bin]# 
[[email protected] bin]# 
[[email protected] bin]# 
[[email protected] bin]# 
[[email protected] bin]# netstat -tlunp|grep 28080
tcp        0      0 0.0.0.0:23000           0.0.0.0:*               LISTEN      28080/fdfs_storaged 
tcp6       6      0 :::28080                :::*                    LISTEN      12168/java          
[[email protected] bin]# 

根据https://stackoverflow.com/questions/44378841/jenkins-detecting-more-than-one-instance的提示:
? Check if another java process is running which runs jenkins e.g. in unix using top
? If you‘re using tomcat, search for a second instance of tomcat having the jenkins.war exploded somewhere
? Could be helpful to just have one version of java installed

查看jenkins,怀疑可能是哪里启动了多个jenkins进程,发现有两个一模一样的jenkins进程,只是进程号不一样:

[[email protected] home]# ps -ef|grep jenkins
samba    10835 10820  0 May18 ?        00:00:05 /bin/tini -- /usr/local/bin/jenkins.sh
samba    10854 10835  0 May18 ?        00:03:53 java -Duser.home=/var/jenkins_home -jar /usr/share/jenkins/jenkins.war
root     30593 21780  0 10:34 pts/2    00:00:00 sh -c  while [ -d ‘/root/.jenkins/workspace/[email protected]/durable-9c600ea7‘ -a \! -f ‘/root/.jenkins/workspins-result.txt‘ ]; do touch ‘/root/.jenkins/workspace/[email protected]/durable-9c600ea7/jenkins-log.txt‘; sleep 3; done  & jsc=durable-95de6aeeb4c40d371cff43dc ‘/root/.jenkins/workspace/[email protected]/durable-9c600ea7/script.sh‘ > ‘/root/.jenkins/workspace/[email protected]/durable-9c600ea7/jenkins-log.txt‘ 2>&1; echo $?tmp/durable-9c600ea7/jenkins-result.txt‘; wait  #这个进程后面的21780看,应该是之前tomcat正常启动的进程
*root     30596 30593  0 10:34 pts/2    00:00:00 sh -c  while [ -d ‘/root/.jenkins/workspace/[email protected]/durable-9c600ea7‘ -a \! -f ‘/root/.jenkins/workspins-result.txt‘ ]; do touch ‘/root/.jenkins/workspace/[email protected]/durable-9c600ea7/jenkins-log.txt‘; sleep 3; done  & jsc=durable-95de6aeeb4c40d371cff43dc ‘/root/.jenkins/workspace/[email protected]/durable-9c600ea7/script.sh‘ > ‘/root/.jenkins/workspace/[email protected]/durable-9c600ea7/jenkins-log.txt‘ 2>&1; echo $?tmp/durable-9c600ea7/jenkins-result.txt‘; wait  #这个进程有点异常
root     30597 30593  0 10:34 pts/2    00:00:00 /bin/sh -xe /root/.jenkins/workspace/[email protected]/durable-9c600ea7/script.sh
root     30600 30597 44 10:34 pts/2    00:00:13 /usr/local/jdk/bin/java -classpath /var/jenkins_home/apache-maven-3.5.2/boot/plexus-classworlds-2.5.2.jare/apache-maven-3.5.2/bin/m2.conf -Dmaven.home=/var/jenkins_home/apache-maven-3.5.2 -Dlibrary.jansi.path=/var/jenkins_home/apache-maven-3.5.2/lib/jansi-natory=/home/.jenkins/workspace/locman/locman-service-controller org.codehaus.plexus.classworlds.launcher.Launcher package -DskipTests
root     30702 30600  0 10:35 pts/2    00:00:00 /bin/sh -c cd /home/.jenkins/workspace/locman/locman-service-controller && /usr/local/jdk/jre/../bin/java.javac.JavacCompiler8324825440823874050arguments
root     31210  7771  0 10:35 pts/2    00:00:00 grep --color=auto jenkins
[[email protected] home]# 

原因说明:
因为jenkins是放在tomcat下面的,将jenkins.war解压到了/usr/local/apache-tomcat-8.0.48/webapps/ROOT目录下面,但是还放了一个jenkins.war在webapps下面忘记删掉。因此在启动tomcat的时候,就一起启动了webapps下面的jenkins.war和ROOT目录下面的jenkins包内容。所以就启动了两个jenkins实例。

jenkins.war放在webapps目录下面和解压到ROOT目录下面的区别:
ROOT目录下面默认是tomcat的管理程序,但是如果你把自己的jenkins发布到root下面的话,你可以不通过项目名直接访问你的项目,直接使用通过http://localhost:8080直接访问你的项目(下图端口号用的28080):
技术分享图片

如果放在webapps下面,访问的时候,就需要通过项目名称来访问http://localhost:8080/jenkins/(下图端口号用的28080):
技术分享图片

解决方法:

杀掉所有的jenkins和tomcat进程,然后将webapps下面的jenkins.war改个名字或者删掉,再重启tomcat

[[email protected] webapps]# mv jenkins.war  jenkins.war.bak
[[email protected] bin]#  
[[email protected] bin]# ./startup.sh 
[[email protected] webapps]# ps -ef|grep jenkins
root      3611  7771  0 10:54 pts/2    00:00:00 grep --color=auto jenkins
samba    10835 10820  0 May18 ?        00:00:05 /bin/tini -- /usr/local/bin/jenkins.sh
samba    10854 10835  0 May18 ?        00:03:54 java -Duser.home=/var/jenkins_home -jar /usr/share/jenkins/jenkins.war
[[email protected] webapps]# ps -ef|grep tomcat
root      1238     1 19 10:41 pts/2    00:02:33 /usr/local/jdk/bin/java -Djava.util.logging.config.file=/usr/local/apache-tomcat-8.0.48/conf/logging.proprg.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dicat-8.0.48/bin/bootstrap.jar:/usr/local/apache-tomcat-8.0.48/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apache-tomcat-8.0.48 -Dcatalina.home=/usr/locpdir=/usr/local/apache-tomcat-8.0.48/temp org.apache.catalina.startup.Bootstrap start
root      3632  7771  0 10:54 pts/2    00:00:00 grep --color=auto tomcat

然后暂时没有出现这个错误了。

备注:webapps下面的jenkins.war一直都存在,在异常停电重启之前,没有发现报这个错。目前暂时还没出现上面的报错了,问题是否解决还需后续继续观察

02-jenkins-jenkins服务部署在tomcat下

...动Jenkins服务登录Jenkins前言在实际使用中,Jenkins一般部署在Tomcat服务器下,可以解决访问过载等问题。环境JavaJDK环境:详见01-Java环境搭建_小白的博客-CSDN博客停止Jenkins服务:win+R输入 services.msc, 查看详情

linux学习7-一个tomcat部署多个项目(多个端口)(代码片段)

...在tomcat上搭建了jenkins的环境,如果我们有多个项目需要部署的话,如何在一个tomcat下部署多个项目呢?前面是直接在:8080/jenkins访问的,如果有其它项目部署的话,可以新开一个端口,让新的项目访问另外一个端口就行了修改serv... 查看详情

jenkins持续集成环境部署(代码片段)

一、下载JenkinsJenkins下载地址:https://jenkins.io/download/这里我们下载的是jenkins.war二、启动Jenkins在Linux下启动Jenkins有两种方式,一种是在jenkins.war的存放目录下使用命令java-jarjenkins.war启动,另外一种是把jenkins.war放在tomcat的webapps目... 查看详情

如何使用 Jenkins 部署多个 SpringBoot 环境?

】如何使用Jenkins部署多个SpringBoot环境?【英文标题】:HowtodeploymultipleSpringBootenvironmentswithJenkins?【发布时间】:2016-10-2409:31:33【问题描述】:在thisquestion之后,我创建了我的Jenkins构建,我使用它从带有gradle的springboot启动tomcat服... 查看详情

tomcat+jenkins持续集成工具的安装与部署

1、Tomcat下载地址:http://tomcat.apache.org/download-70.cgi#7.0.91将下载好的Tomcat压缩包解压至你要存放的路径下即可:在Tomcat文件夹下,双击运行startup.bat文件这样就可以启动Tomcat应用服务器了此时在浏览器中输入:localhost:8080,进入该80... 查看详情

怎么在同一个tomcat部署多个应用

参考技术A一个tomcat当然可以部署多个应用,部署一百个和一个方法是一样的。另外你两个tomcat部署两个当然也是可以的,可能端口号被占用了,其中一个改下端口号即可。另外其实在实际应用中,一个appserver通常确实是一个服... 查看详情

多个springboot项目部署在一个tomcat容器无法启动(代码片段)

...服务,本次业务需要在阿里云的Linux使用同一个Tomcat容器部署多个项目。部署环境:JDK8、Tomcat8、Centos7遇到的问题我多个项目一直都是部署在同一个Tomcat下 查看详情

一个tomcat下部署多个项目异常:org.springframework.jmx.export.unabletoregistermbeanexception:unabletoregister(代码片

内容简介在测试服务器上Tomcat下部署两个Springboot项目,总是一个能启动成功,另一个启动不成功。这两个war包单独部署均能正常启动。查看日志:启动时报出org.springframework.jmx.export.UnableToRegisterMBeanException:UnabletoregisterMBean的异常... 查看详情

如何远程管理tomcat的关闭,启动,重启

...入文件名(带后缀)按回车就可以了。特别:如果tomcat上部署了多个项目,需要停下指定的项目,那就需要先找到这个特定项目的进程号,然后用kill指令杀死这个进程。参考技术A有两种:一、在Windows系统下:你先远程登录到指... 查看详情

jenkins安装部署(代码片段)

...ins:jenkins下载地址:https://jenkins.io/  下载完后把它部署到你的tomcat上运行:放到tomcat的webapps目录下,启动tomcat(windows下双击startup.bat或者linux下运行sh startup.sh),然后通过浏览器访问,如我的电脑上访问:localhost:8080/... 查看详情

windows下配置多个tomcat服务器

...面的startup.bat即可,但是发现启动Tomcat8的时候,总是会有部署在Tomcat7中的项目一起启动。后发现,要改变Catelina_home的位置。于是在Tomcat8的bin目录下找到startup. 查看详情

一个tomcat下部署多个项目或一个服务器部署多个tomcat

最近需要把两个项目同时部署到服务器上,于是研究了一下,页借鉴了很多别人的方法,把过程记录下来,以儆效尤。目录:1,一个tomcat下同时部署两个项目(多个项目可以参考)1.1项目都放在webapps内(共用一个端口)1)把两... 查看详情

jenkins安装-柠檬班

...jdk环境,那么安装war包后可以直接运行;如果没有则可以部署到tomcat上面;推荐使用jenkins+tomcat;想要公司的人都能使用jenkins的话,就把jenkins部署在公司服务器上,一般运维会负责完成这个工作   2.jenkins是什么 &n... 查看详情

jenkins在windows环境下的3种部署方式

本文主要介绍Jenkins在windows环境下的3种部署方式:(1)官网下载jenkins.msi文件直接安装。jenkins官网地址:https:/jenkins.io/zh/(2)jenkins.war包,在tomcat中进行部署(3)命令行运行jenkins.war包安装包链接:https://pan.baidu.com/s/1QAcsdUTYpR4c_... 查看详情

jenkins部署

Jenkins 文档 1.环境与配置linuxcentosMavenJDK1.8Tomcat72.下载Jenkins 本次使用版本2.32.2官方下载地址:https://jenkins.io/index.html  3.部署Jenkins将下载的jenkins.war部署到linux系统tomcat下启动tomcat  1和2 查看详情

在没有 Tomcat 管理器的情况下从 jenkins 自动部署战争文件

】在没有Tomcat管理器的情况下从jenkins自动部署战争文件【英文标题】:Auto-DeploywarfilefromjenkinswithoutTomcat\'sManager【发布时间】:2015-12-0718:46:00【问题描述】:我想构建一个自动脚本或等效于通过jenkins将战争文件自动部署到tomcat服... 查看详情

多个项目如何部署在一个tomcat

使用tomcat主要是用来部署web应用。1)默认,项目是部署在~/tomcat/webapps/下面的。当绕tomcat的加载程序位置可在server.xml中配置。2)将项目编译成war包的形式,直接丢到tomcat的加载位置。默认webapps下面,启动tomcat即可。各项目的名... 查看详情

jenkins自动化部署

...交到git或svn。要运行程序则需要将svn或git上的代码编译并部署到web服务器。这个部署如果是手动的则每次都需要执行编译命令,再手动把war文件之类拷贝到服务器,最后重启tomcat,次数多了就会显得很繁琐。Jenkins就是为了解决... 查看详情