JAVA环境部署
目录
Docker环境
安装Docker
安装docker-compose
配置docker国内镜像。推荐:毫秒镜像
防火墙设置
为了后续的测试方便,先停用防火墙,并重启docker
# 停用防火前
systemctl stop firellwd
# 重启docker
systemctl restart docker
Nacos
nacos
部署文件 docker-compose-nacos.yml
:
version: "2"
services:
nacos:
image: nacos/nacos-server:v2.3.0
container_name: nacos-server
environment:
- PREFER_HOST_MODE=hostname
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=192.168.110.193
- MYSQL_SERVICE_DB_NAME=nacos_config
- MYSQL_SERVICE_PORT=33061
- MYSQL_SERVICE_USER=nacos
- MYSQL_SERVICE_PASSWORD=*****
ports:
- "8848:8848"
- "9555:9555"
- "9848:9848"
- "9849:9849"
restart: on-failure
安装并运行容器
docker-compose -f docker-compose-nacos.yml up -d
测试访问Nacos
访问地址:http://*:8848/nacos/
注意:网址中一定要加上/nacos
,不然无法正常访问
minio
minio
部署文件 docker-compose-minio.yml
version: '3.4'
services:
minio:
image: minio/minio:RELEASE.2024-08-03T04-33-23Z
container_name: minio
ports:
- "9000:9000"
- "9009:9009"
restart: always
command: server /data --console-address ":9009"
environment:
MINIO_ROOT_USER: minio
MINIO_ROOT_PASSWORD: minio123
logging:
options:
max-size: "50M" # 最大文件上传限制
max-file: "10"
driver: json-file
volumes:
- /data/minio/data:/data # 映射文件路径
# - ~/data/minio/etc/localtime:/etc/localtime:ro
# - ~/data/minio/etc/timezone/timezone:/etc/timezone:ro
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
安装并运行容器
docker-compose -f docker-compose-minio.yml up -d
测试访问minio
访问端口:9000
minio默认账号密码在docker-compose-minio.yml文件中配置的
rocketmq
rocketmq
部署文件 docker-compose-rocketmq.yml
version: '3.5'
services:
rmqnamesrv:
image: docker.1ms.run/foxiswho/rocketmq:server
container_name: rmqnamesrv
restart: always
ports:
- 9876:9876
volumes:
- /data/rocketmq/namesrv/logs:/opt/logs
- /data/rocketmq/namesrv/store:/opt/store
rmqbroker:
image: docker.1ms.run/foxiswho/rocketmq:broker
container_name: rmqbroker
restart: always
ports:
- 10909:10909
- 10911:10911
volumes:
- /data/rocketmq/broker/logs:/opt/logs
- /data/rocketmq/broker/store:/opt/store
- /data/rocketmq/broker/conf/broker.conf:/etc/rocketmq/broker.conf
environment:
NAMESRV_ADDR: "rmqnamesrv:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
command: mqbroker -c /etc/rocketmq/broker.conf
depends_on:
- rmqnamesrv
rmqconsole:
image: docker.1ms.run/styletang/rocketmq-console-ng
container_name: rmqconsole
restart: always
ports:
- 18010:8080
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
depends_on:
- rmqnamesrv
安装并启动容器
docker-compose -f docker-compose-rocketmq.yml up -d
修改 rocketmq的节点配置文件
rocketmq的broker节点的配置文件
配置文件在docker-compose-rocketmq.yml中有指定
需要删除生成的broker.conf文件夹,创建broker.conf文件
broker.conf文件夹内容
将namesrvAddr修改为rocketmq安装的服务器IP
brokerClusterName=ZYCluster
#broker名字
brokerName=broker-a
#0表示Master,>0表示Slave
brokerId=0
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=10911
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
brokerIP1=127.0.0.1
测试访问rocketmq
访问:127.0.0.1:18010
可访问rocketmq
都启动后的截图
安装nexus
docker-compose-nexus.yml文件内容
version: '3.2'
services:
nexus3:
image: docker.1ms.run/sonatype/nexus3:3.70.4
container_name: nexus3
restart: always
ports:
- "8081:8081"
volumes:
- /data:/nexus-data
安装容器
启用容器安装命令前,先确保 /data/nuxus
文件夹存在,并且给与了足够权限
如果不给权限,容器启动会报错。
docker-compose -f docker-compose-nexus.yml up -d
启动后,访问8081端口
初始admin登陆密码在/data/nexus/admin.password
文件中记录
安装JDK
JDK下载地址:https://www.oracle.com/java/technologies/downloads/?er=221886#java21
下载JDK 17
创建目录: /usr/local/jdk/
mkdir -p /usr/local/jdk
下载好的jdk-17.0.14_linux-x64_bin.rpm
文件上传到 /usr/local/jdk/目录下
执行命令安装
rpm -ivh jdk-17.0.14_linux-x64_bin.rpm
输入命令校验安装是否成功
如果不行,尝试下面步骤
添加环境变量
修改 /etc/profile
文件,末尾添加下面代码
export JAVA_HOME=/usr/java/default(jdk所在目录,通过 pwd 命令查看目录)
export JRE_HOME=\$JAVA_HOME/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
过source命令重新加载/etc/profile文件,使得修改后的内容在当前shell窗口有效:
source /etc/profile
安装Maven
下载地址:https://maven.apache.org/download.cgi
3.6.3版本下载地址:https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/
下载后,解压缩,apache-maven-3.6.3文件夹上传到/etc目录
设置Maven 国内镜像地址(这里采用阿里云)
配置Maven环境变量
修改文件/etc/profile
在末尾添加如下内容
export JAVA_HOME=/usr/java/default(jdk所在目录,通过 pwd 命令查看目录)
export JRE_HOME=\$JAVA_HOME/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export MAVEN_HOME=/etc/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
export PATH MAVEN_HOME JAVA_HOME
重载配置文件
source /etc/profile
输入 mvn -v查看是否正确配置
mvn -v
如果提示权限不够,修改appache-maven-3.6.3/bin/mvn文件权限
chmod 755 /etc/apache-maven-3.6.3/bin/mvn
修改后,查看版本应该是:
参考:CentOS7——安装配置Maven(Apache Maven)_centos7安装maven的setting文件-CSDN博客
安装GIT
执行命令 yum -y install git
安装git
yum -y install git
安装后输入 git --version
验证是否安装成功
git --version
安装Jenkins流水线安装
下载Jenkins.war文件,下载地址:https://www.jenkins.io/download/
下载后,把下载的文件上传到root目录下
root中新建脚本 start_jenkins.sh,脚本内容为
nohup java -jar jenkins.war --httpPort=18888 &
运行:
sh start_jenkins.sh
查看nohup.out文件如果出现如下报错:
Running from: /root/jenkins.war
webroot: /root/.jenkins/war
2025-02-28 02:29:38.489+0000 [id=1] INFO winstone.Logger#logInternal: Beginning extraction from war file
2025-02-28 02:29:40.317+0000 [id=1] WARNING o.e.j.ee9.nested.ContextHandler#setContextPath: Empty contextPath
2025-02-28 02:29:40.388+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: jetty-12.0.16; built: 2024-12-09T21:02:54.535Z; git: c3f88bafb4e393f23204dc14dc57b042e84debc7; jvm 17.0.14+8-LTS-191
2025-02-28 02:29:40.880+0000 [id=1] INFO o.e.j.e.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.ee9.jsp.JettyJspServlet
2025-02-28 02:29:40.945+0000 [id=1] INFO o.e.j.s.DefaultSessionIdManager#doStart: Session workerName=node0
2025-02-28 02:29:41.471+0000 [id=1] INFO hudson.WebAppMain#contextInitialized: Jenkins home directory: /root/.jenkins found at: $user.home/.jenkins
2025-02-28 02:29:41.537+0000 [id=1] SEVERE hudson.util.BootFailure#publish: Failed to initialize Jenkins
java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration
at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1269)
at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:224)
at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:106)
at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:706)
at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:358)
at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:315)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:315)
at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
Caused: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:85)
Caused: java.lang.InternalError
at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:87)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:75)
at java.desktop/java.awt.Font.getFont2D(Font.java:526)
at java.desktop/java.awt.Font.getFamily(Font.java:1436)
at java.desktop/java.awt.Font.getFamily_NoClientCode(Font.java:1410)
at java.desktop/java.awt.Font.getFamily(Font.java:1402)
at java.desktop/java.awt.Font.toString(Font.java:1895)
at hudson.util.ChartUtil.<clinit>(ChartUtil.java:270)
at hudson.WebAppMain.contextInitialized(WebAppMain.java:219)
Caused: hudson.util.AWTProblem
at hudson.WebAppMain.contextInitialized(WebAppMain.java:220)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.callContextInitialized(ContextHandler.java:900)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:596)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.contextInitialized(ContextHandler.java:837)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler.initialize(ServletHandler.java:743)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletContextHandler.startContext(ServletContextHandler.java:364)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.webapp.WebAppContext.startWebapp(WebAppContext.java:1358)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.webapp.WebAppContext.startContext(WebAppContext.java:1319)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.doStartInContext(ContextHandler.java:694)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.call(ContextHandler.java:1446)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.doStart(ContextHandler.java:678)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletContextHandler.doStart(ServletContextHandler.java:278)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.webapp.WebAppContext.doStart(WebAppContext.java:529)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:491)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler.lambda$doStart$0(ContextHandler.java:754)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.call(ContextHandler.java:1452)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:754)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler$CoreContextHandler.doStart(ContextHandler.java:2727)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:120)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:491)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.java:132)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Server.start(Server.java:641)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:120)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:491)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Server.doStart(Server.java:582)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//winstone.Launcher.<init>(Launcher.java:190)
at Jenkins Main ClassLoader//winstone.Launcher.main(Launcher.java:490)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at executable.Main.main(Main.java:335)
2025-02-28 02:29:41.810+0000 [id=1] WARNING o.e.j.ee9.webapp.WebAppContext#doStart: Failed startup of context w.HostConfiguration$@53830483{Jenkins v2.492.1,/,file:///root/.jenkins/war/,false}{/root/.jenkins/war}
java.lang.IllegalStateException: Jenkins.instance is missing. Read the documentation of Jenkins.getInstanceOrNull to see what you are doing wrong.
at jenkins.model.Jenkins.get(Jenkins.java:803)
at hudson.util.BootFailure.publish(BootFailure.java:55)
at hudson.WebAppMain.contextInitialized(WebAppMain.java:299)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.callContextInitialized(ContextHandler.java:900)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:596)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.contextInitialized(ContextHandler.java:837)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler.initialize(ServletHandler.java:743)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletContextHandler.startContext(ServletContextHandler.java:364)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.webapp.WebAppContext.startWebapp(WebAppContext.java:1358)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.webapp.WebAppContext.startContext(WebAppContext.java:1319)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.doStartInContext(ContextHandler.java:694)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.call(ContextHandler.java:1446)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.doStart(ContextHandler.java:678)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletContextHandler.doStart(ServletContextHandler.java:278)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.webapp.WebAppContext.doStart(WebAppContext.java:529)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:491)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler.lambda$doStart$0(ContextHandler.java:754)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.call(ContextHandler.java:1452)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:754)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler$CoreContextHandler.doStart(ContextHandler.java:2727)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:120)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:491)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.java:132)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Server.start(Server.java:641)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:120)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:491)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Server.doStart(Server.java:582)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//winstone.Launcher.<init>(Launcher.java:190)
at Jenkins Main ClassLoader//winstone.Launcher.main(Launcher.java:490)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at executable.Main.main(Main.java:335)
2025-02-28 02:29:41.817+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStop: Stopped oejs.Server@36060e{STOPPING}[12.0.16,sto=0]
2025-02-28 02:29:41.822+0000 [id=1] INFO winstone.Logger#logInternal: Jetty shutdown successfully
java.io.IOException: Failed to start Jetty
at Jenkins Main ClassLoader//winstone.Launcher.<init>(Launcher.java:194)
at Jenkins Main ClassLoader//winstone.Launcher.main(Launcher.java:490)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at executable.Main.main(Main.java:335)
Caused by: java.lang.IllegalStateException: Jenkins.instance is missing. Read the documentation of Jenkins.getInstanceOrNull to see what you are doing wrong.
at jenkins.model.Jenkins.get(Jenkins.java:803)
at hudson.util.BootFailure.publish(BootFailure.java:55)
at hudson.WebAppMain.contextInitialized(WebAppMain.java:299)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.callContextInitialized(ContextHandler.java:900)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:596)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.contextInitialized(ContextHandler.java:837)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler.initialize(ServletHandler.java:743)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletContextHandler.startContext(ServletContextHandler.java:364)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.webapp.WebAppContext.startWebapp(WebAppContext.java:1358)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.webapp.WebAppContext.startContext(WebAppContext.java:1319)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.doStartInContext(ContextHandler.java:694)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.call(ContextHandler.java:1446)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.doStart(ContextHandler.java:678)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletContextHandler.doStart(ServletContextHandler.java:278)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.webapp.WebAppContext.doStart(WebAppContext.java:529)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:491)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler.lambda$doStart$0(ContextHandler.java:754)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.call(ContextHandler.java:1452)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:754)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler$CoreContextHandler.doStart(ContextHandler.java:2727)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:120)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:491)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.java:132)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Server.start(Server.java:641)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:120)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:491)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Server.doStart(Server.java:582)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//winstone.Launcher.<init>(Launcher.java:190)
... 6 more
2025-02-28 02:29:41.824+0000 [id=1] SEVERE winstone.Logger#logInternal: Container startup failed
java.lang.IllegalStateException: Jenkins.instance is missing. Read the documentation of Jenkins.getInstanceOrNull to see what you are doing wrong.
at jenkins.model.Jenkins.get(Jenkins.java:803)
at hudson.util.BootFailure.publish(BootFailure.java:55)
at hudson.WebAppMain.contextInitialized(WebAppMain.java:299)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.callContextInitialized(ContextHandler.java:900)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:596)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.contextInitialized(ContextHandler.java:837)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler.initialize(ServletHandler.java:743)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletContextHandler.startContext(ServletContextHandler.java:364)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.webapp.WebAppContext.startWebapp(WebAppContext.java:1358)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.webapp.WebAppContext.startContext(WebAppContext.java:1319)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.doStartInContext(ContextHandler.java:694)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.call(ContextHandler.java:1446)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.doStart(ContextHandler.java:678)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletContextHandler.doStart(ServletContextHandler.java:278)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.webapp.WebAppContext.doStart(WebAppContext.java:529)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:491)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler.lambda$doStart$0(ContextHandler.java:754)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.call(ContextHandler.java:1452)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:754)
at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler$CoreContextHandler.doStart(ContextHandler.java:2727)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:120)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:491)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.java:132)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Server.start(Server.java:641)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:120)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:491)
at Jenkins Main ClassLoader//org.eclipse.jetty.server.Server.doStart(Server.java:582)
at Jenkins Main ClassLoader//org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
at Jenkins Main ClassLoader//winstone.Launcher.<init>(Launcher.java:190)
Caused: java.io.IOException: Failed to start Jetty
at Jenkins Main ClassLoader//winstone.Launcher.<init>(Launcher.java:194)
at Jenkins Main ClassLoader//winstone.Launcher.main(Launcher.java:490)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at executable.Main.main(Main.java:335)
分析原因是系统中缺少字体文件
运行fc-list查看系统中字体
如果提示fc-list
命令不存在,执行命令yum install fontconfig
安装
参考:https://commandnotfound.cn/linux/1/557/fc-list-%E5%91%BD%E4%BB%A4
执行命令:yum -y install fontconfig
安装 fontconfig 和相关字体包
yum -y install fontconfig
然后再次运行jenkins
sh start_jenkins.sh
完事后看nohup.out文件输出如下内容,代表启动成功
Running from: /root/jenkins.war
webroot: /root/.jenkins/war
2025-02-28 03:12:08.830+0000 [id=1] INFO winstone.Logger#logInternal: Beginning extraction from war file
2025-02-28 03:12:08.918+0000 [id=1] WARNING o.e.j.ee9.nested.ContextHandler#setContextPath: Empty contextPath
2025-02-28 03:12:08.996+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: jetty-12.0.16; built: 2024-12-09T21:02:54.535Z; git: c3f88bafb4e393f23204dc14dc57b042e84debc7; jvm 17.0.14+8-LTS-191
2025-02-28 03:12:09.489+0000 [id=1] INFO o.e.j.e.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.ee9.jsp.JettyJspServlet
2025-02-28 03:12:09.554+0000 [id=1] INFO o.e.j.s.DefaultSessionIdManager#doStart: Session workerName=node0
2025-02-28 03:12:10.086+0000 [id=1] INFO hudson.WebAppMain#contextInitialized: Jenkins home directory: /root/.jenkins found at: $user.home/.jenkins
2025-02-28 03:12:10.219+0000 [id=1] INFO o.e.j.s.handler.ContextHandler#doStart: Started oeje9n.ContextHandler$CoreContextHandler@30b34287{Jenkins v2.492.1,/,b=file:///root/.jenkins/war/,a=AVAILABLE,h=oeje9n.ContextHandler$CoreContextHandler$CoreToNestedHandler@5489c777{STARTED}}
2025-02-28 03:12:10.232+0000 [id=1] INFO o.e.j.server.AbstractConnector#doStart: Started ServerConnector@43c67247{HTTP/1.1, (http/1.1)}{0.0.0.0:18888}
2025-02-28 03:12:10.244+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: Started oejs.Server@147ed70f{STARTING}[12.0.16,sto=0] @2075ms
2025-02-28 03:12:10.245+0000 [id=26] INFO winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled
2025-02-28 03:12:10.418+0000 [id=25] INFO jenkins.model.Jenkins#<init>: Starting version 2.492.1
2025-02-28 03:12:10.517+0000 [id=34] INFO jenkins.InitReactorRunner$1#onAttained: Started initialization
2025-02-28 03:12:10.531+0000 [id=44] INFO jenkins.InitReactorRunner$1#onAttained: Listed all plugins
2025-02-28 03:12:11.565+0000 [id=46] INFO jenkins.InitReactorRunner$1#onAttained: Prepared all plugins
2025-02-28 03:12:11.570+0000 [id=46] INFO jenkins.InitReactorRunner$1#onAttained: Started all plugins
2025-02-28 03:12:11.572+0000 [id=37] INFO jenkins.InitReactorRunner$1#onAttained: Augmented all extensions
2025-02-28 03:12:11.750+0000 [id=37] INFO jenkins.InitReactorRunner$1#onAttained: System config loaded
2025-02-28 03:12:11.751+0000 [id=35] INFO jenkins.InitReactorRunner$1#onAttained: System config adapted
2025-02-28 03:12:11.751+0000 [id=45] INFO jenkins.InitReactorRunner$1#onAttained: Loaded all jobs
2025-02-28 03:12:11.753+0000 [id=37] INFO jenkins.InitReactorRunner$1#onAttained: Configuration for all jobs updated
2025-02-28 03:12:11.776+0000 [id=60] INFO hudson.util.Retrier#start: Attempt #1 to do the action check updates server
2025-02-28 03:12:12.116+0000 [id=44] INFO jenkins.install.SetupWizard#init:
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
0fb24da955ae480988d6bad3b5803c56
This may also be found at: /root/.jenkins/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
2025-02-28 03:12:18.247+0000 [id=44] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization
2025-02-28 03:12:18.258+0000 [id=25] INFO hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running
访问Jenkins
jenkins访问端口:18888 (在start_jenkins.sh文件中配置的端口)
初始密码,在nohup.out文件中
打开如果提示报错
进入插件管理界面的 Advanced settings 高级设置面板,在该面板中找到 Update Size 更新升级站点,将其中 URL,即 Jenkins 插件下载源修改更换为国内镜像,然后点击提交保存
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
https://blog.csdn.net/weixin_53742691/article/details/139269989
Jenkins流水线配置
1. 配置JDK 1.8
由于jenkins需要jdk17,而项目的jdk是1.8,因此,需要在jenkins里面配置jdk1.8的信息
下载JDK 1.8
,对应java 8u**版本 下载地址: https://repo.huaweicloud.com/java/jdk/8u202-b08/
下载后,上传到/etc目录
输入命令解压文件:
tar -zxvf jdk-8u202-linux-x64.tar.gz
解压后:
打开Manage Jenkins Tools配置页面
配置JDK,JAVA_HOME需要和自己解压的文件名保持一致
2. 配置maven信息
进入配置-工具,配置maven信息