人生若只如初见

WXY

Jpom快速入门:安装到发布Springboot项目的完整教程

2024-07-12

2023-11-03-mlemuexz.svg

  • 通过这篇文章,您将学习如何从零开始安装Jpom,并逐步构建和发布一个Springboot项目。

  • 如果您还想了解更多关于Jpom的内容,请参考:

https://www.wxy97.com/archives/7164f70d-ae41-4c30-8063-9471264d70e2

准备

一台或多台Linux机器,本教程使用了一台CentOS7

安装Jpom

Jpom分为: Server(服务端)Agent(插件端)

Server安装

服务端可以理解为 Jpom 的一个总控系统,用户直接访问对应系统管理所有节点。一般情况服务端只需要安装一次即可,服务端可以管理多个插件端

这里我使用文档提供的一键安装脚本,根据文档说明选择合适的安装参数,我的机器上之前已经安装过jdk8了 故这里我安装参数 为default+service 默认安装和安装服务

如果你的系统没有安装maven可用使用default+service+mvn 因为后面构建Springboot项目要使用mvn命令

curl -fsSL https://jpom.top/docs/install.sh | bash -s Server default+service

安装完成后可以查看下Server端输出日志(目录为Jpom默认安装路径)

tail -fn 1000 /usr/local/jpom-server/logs/server.log

输出如下 即启动成功

2024-07-11 14:55:42.774 [main] INFO  o.s.b.SpringApplication [SpringApplicationBannerPrinter.java:62] -        _
      | |
      | |_ __   ___  _ __ ___
  _   | | '_ \ / _ \| '_ ` _ \
 | |__| | |_) | (_) | | | | | |
  \____/| .__/ \___/|_| |_| |_|
        | |
        |_|
 ➜ Jpom is licensed under Mulan PSL v2.
 ➜ \  (•◡•) / (v2.11.8)


2024-07-11 14:55:53.960 [main] WARN  o.s.b.StartupInfoLogger [StartupInfoLogger.java:117] - InetAddress.getLocalHost().getHostName() took 10069 milliseconds to respond. Please verify your network configuration.
2024-07-11 14:56:04.033 [main] WARN  o.s.b.s.ApplicationPid [ApplicationPid.java:75] - ManagementFactory.getRuntimeMXBean().getName() took 10071 milliseconds to respond. This may be due to slow host name resolution. Please verify your network configuration.
2024-07-11 14:56:04.035 [main] INFO  o.d.j.JpomServerApplication [StartupInfoLogger.java:55] - Starting JpomServerApplication v2.11.8 using Java 1.8.0_332 on xxxx with PID 5696 (/usr/local/jpom-server/lib/server-2.11.8.jar started by root in /usr/local/jpom-server)
2024-07-11 14:56:04.037 [main] INFO  o.d.j.JpomServerApplication [SpringApplication.java:632] - No active profile set, falling back to 1 default profile: "default"
2024-07-11 14:56:08.128 [main] INFO  o.s.b.w.e.t.TomcatWebServer [TomcatWebServer.java:108] - Tomcat initialized with port(s): 2122 (http)
2024-07-11 14:56:08.141 [main] INFO  o.a.c.h.Http11NioProtocol [DirectJDKLog.java:173] - Initializing ProtocolHandler ["http-nio-2122"]
2024-07-11 14:56:08.144 [main] INFO  o.a.c.c.StandardService [DirectJDKLog.java:173] - Starting service [Tomcat]
2024-07-11 14:56:08.145 [main] INFO  o.a.c.c.StandardEngine [DirectJDKLog.java:173] - Starting Servlet engine: [Apache Tomcat/9.0.86]
2024-07-11 14:56:08.342 [main] INFO  o.a.c.c.C.[.[.[/] [DirectJDKLog.java:173] - Initializing Spring embedded WebApplicationContext
2024-07-11 14:56:08.342 [main] INFO  o.s.b.w.s.c.ServletWebServerApplicationContext [ServletWebServerApplicationContext.java:292] - Root WebApplicationContext: initialization completed in 4180 ms
2024-07-11 14:56:31.469 [main] INFO  o.d.j.c.JpomApplicationEvent [JpomApplicationEvent.java:117] - Jpom[2.11.8] Current data path:/usr/local/jpom-server External configuration file path:file:/usr/local/jpom-server/conf/application.yml
2024-07-11 14:56:31.718 [main] INFO  o.d.j.c.JpomApplicationEvent [JpomApplicationEvent.java:141] - 安装成功,本机安装 ID 为:41a221c7d96c4a65be6dcda6b75d5794
2024-07-11 14:56:31.755 [main] INFO  o.d.j.s.d.InitDb [InitDb.java:97] - start load H2 db
2024-07-11 14:56:33.077 [main] INFO  o.d.j.s.d.InitDb [InitDb.java:232] - exec init SQL file: table.all.v1.0.csv complete, and affected rows is: 0
2024-07-11 14:56:33.136 [main] INFO  o.d.j.s.d.InitDb [InitDb.java:232] - exec init SQL file: table.all.v1.1.csv complete, and affected rows is: 0
2024-07-11 14:56:33.172 [main] INFO  o.d.j.s.d.InitDb [InitDb.java:232] - exec init SQL file: table.all.v1.2.csv complete, and affected rows is: 0
2024-07-11 14:56:33.177 [main] INFO  o.d.j.s.d.InitDb [InitDb.java:232] - exec init SQL file: table.h2.v1.0.csv complete, and affected rows is: 0
2024-07-11 14:56:33.278 [main] INFO  o.d.j.s.d.InitDb [InitDb.java:232] - exec init SQL file: alter.all.v1.0.csv complete, and affected rows is: 0
2024-07-11 14:56:33.443 [main] INFO  o.d.j.s.d.InitDb [InitDb.java:232] - exec init SQL file: alter.all.v1.1.csv complete, and affected rows is: 0
2024-07-11 14:56:33.448 [main] INFO  o.d.j.s.d.InitDb [InitDb.java:232] - exec init SQL file: alter.all.v1.2.1.csv complete, and affected rows is: 0
2024-07-11 14:56:33.452 [main] INFO  o.d.j.s.d.InitDb [InitDb.java:232] - exec init SQL file: alter.all.v1.2.csv complete, and affected rows is: 0
2024-07-11 14:56:33.970 [main] INFO  o.d.j.s.d.InitDb [InitDb.java:232] - exec init SQL file: alter.all.v1.3.csv complete, and affected rows is: 0
2024-07-11 14:56:34.139 [main] INFO  o.d.j.s.d.InitDb [InitDb.java:232] - exec init SQL file: alter.all.v1.4.csv complete, and affected rows is: 0
2024-07-11 14:56:34.144 [main] INFO  o.d.j.s.d.InitDb [InitDb.java:232] - exec init SQL file: index.all.v1.0.csv complete, and affected rows is: 0
2024-07-11 14:56:34.146 [main] INFO  o.d.j.s.d.InitDb [InitDb.java:168] - H2 db Successfully loaded, url is 【jdbc:h2:/usr/local/jpom-server/db/Server;CACHE_SIZE=51200;MODE=MYSQL;LOCK_TIMEOUT=10000】
2024-07-11 14:56:34.257 [main] INFO  o.d.j.s.s.WorkspaceService [WorkspaceService.java:41] - 初始化默认工作空间
2024-07-11 14:56:34.483 [main] INFO  o.d.j.c.JpomApplicationEvent [JpomApplicationEvent.java:247] - Server Successfully started,Can use happily => http://172.16.102.158:2122 【The current address is for reference only】
2024-07-11 14:56:35.303 [main] INFO  o.s.b.a.w.s.WelcomePageHandlerMapping [WelcomePageHandlerMapping.java:60] - Adding welcome page: class path resource [dist/index.html]
2024-07-11 14:56:36.031 [main] INFO  o.a.c.h.Http11NioProtocol [DirectJDKLog.java:173] - Starting ProtocolHandler ["http-nio-2122"]
2024-07-11 14:56:36.104 [main] INFO  o.s.b.w.e.t.TomcatWebServer [TomcatWebServer.java:220] - Tomcat started on port(s): 2122 (http) with context path ''
2024-07-11 14:56:36.136 [main] INFO  o.d.j.JpomServerApplication [StartupInfoLogger.java:61] - Started JpomServerApplication in 76.775 seconds (JVM running for 78.717)
2024-07-11 14:56:36.156 [main] INFO  o.d.j.JpomServerApplication [JpomServerApplication.java:104] - Time-consuming to start this time:1分17秒297毫秒
2024-07-11 14:56:36.664 [pool-2-thread-2] INFO  o.d.j.f.a.s.MachineNodeStatLogServer [MachineNodeStatLogServer.java:50] - 自动清理 0 条机器节点统计日志

Server端默认端口为2122,安装完成打开浏览器访问 ip:2122 完成系统初始化!

请注意你的防火墙是否开启有防火墙,如果有需要放行2122端口才能正常访问

2024-07-11-nasnnuos.webp

完成初始化管理员账号密码 和 两步验证配置(如不需要可跳过)

到此Server端安装配置成功可以愉快的使用Jpom了

2024-07-11-hgabufqc.webp

温馨提示:如果使用 ssh 管理、构建发布到 ssh 中,只需要安装Server(服务端)即可,不一定需要搭配插件端就能使用 Jpom。

我们这里要使用Jpom的项目功能 所以继续安装Agent(插件端)

Agent安装

插件端可以理解为需要在 Jpom 被管理到服务器的守护程序,插件端主要是去监控对应服务器一些基本信息,保存一些项目信息已经对应项目的相关文件等。 已经安装插件端的服务器在 Jpom 中也可以称为节点 温馨提示:插件端存在账号密码,插件端端账号密码和服务端端管理员账号密码是不同的奥!

我这里把Sever 和 Agent 安装到同一台机器上,在实际生产环境中,您可以根据需要将Agent安装到不同的机器上,以实现更灵活的项目部署和管理。

同样Agent这里我也使用文档提供的一键安装脚本, 选择安装参数default+service 默认安装和安装服务

curl -fsSL https://jpom.top/docs/install.sh | bash -s Agent default+service

安装完成后可以查看下Agent端输出日志(目录为Jpom默认安装路径)

tail -fn 1000 /usr/local/jpom-agent/logs/agent.log

输出如下 即启动成功

2024-07-11 15:32:26.783 [main] INFO  o.s.b.SpringApplication [SpringApplicationBannerPrinter.java:62] -        _
      | |
      | |_ __   ___  _ __ ___
  _   | | '_ \ / _ \| '_ ` _ \
 | |__| | |_) | (_) | | | | | |
  \____/| .__/ \___/|_| |_| |_|
        | |
        |_|
 ➜ Jpom is licensed under Mulan PSL v2.
 ➜ \  (•◡•) / (v2.11.8)


2024-07-11 15:32:37.624 [main] WARN  o.s.b.StartupInfoLogger [StartupInfoLogger.java:117] - InetAddress.getLocalHost().getHostName() took 10096 milliseconds to respond. Please verify your network configuration.
2024-07-11 15:32:47.703 [main] WARN  o.s.b.s.ApplicationPid [ApplicationPid.java:75] - ManagementFactory.getRuntimeMXBean().getName() took 10078 milliseconds to respond. This may be due to slow host name resolution. Please verify your network configuration.
2024-07-11 15:32:47.707 [main] INFO  o.d.j.JpomAgentApplication [StartupInfoLogger.java:55] - Starting JpomAgentApplication v2.11.8 using Java 1.8.0_332 on xxxx with PID 10954 (/usr/local/jpom-agent/lib/agent-2.11.8.jar started by root in /usr/local/jpom-agent)
2024-07-11 15:32:47.709 [main] INFO  o.d.j.JpomAgentApplication [SpringApplication.java:632] - No active profile set, falling back to 1 default profile: "default"
2024-07-11 15:32:50.060 [main] INFO  o.s.b.w.e.t.TomcatWebServer [TomcatWebServer.java:108] - Tomcat initialized with port(s): 2123 (http)
2024-07-11 15:32:50.075 [main] INFO  o.a.c.h.Http11NioProtocol [DirectJDKLog.java:173] - Initializing ProtocolHandler ["http-nio-2123"]
2024-07-11 15:32:50.079 [main] INFO  o.a.c.c.StandardService [DirectJDKLog.java:173] - Starting service [Tomcat]
2024-07-11 15:32:50.079 [main] INFO  o.a.c.c.StandardEngine [DirectJDKLog.java:173] - Starting Servlet engine: [Apache Tomcat/9.0.86]
2024-07-11 15:32:50.269 [main] INFO  o.a.c.c.C.[.[.[/] [DirectJDKLog.java:173] - Initializing Spring embedded WebApplicationContext
2024-07-11 15:32:50.269 [main] INFO  o.s.b.w.s.c.ServletWebServerApplicationContext [ServletWebServerApplicationContext.java:292] - Root WebApplicationContext: initialization completed in 2461 ms
2024-07-11 15:33:01.253 [main] INFO  o.d.j.c.JpomApplicationEvent [JpomApplicationEvent.java:117] - Jpom[2.11.8] Current data path:/usr/local/jpom-agent External configuration file path:file:/usr/local/jpom-agent/bin/../conf/application.yml
2024-07-11 15:33:01.509 [main] INFO  o.d.j.c.JpomApplicationEvent [JpomApplicationEvent.java:141] - 安装成功,本机安装 ID 为:4d0c6ffbf14a4cc3901468d2c35bcaa9
2024-07-11 15:33:01.554 [main] INFO  o.d.j.c.AgentAuthorize [AgentAuthorize.java:104] - Automatically generate authorized account:jpomAgent  password:5YVhymImcP  Authorization information storage location:/usr/local/jpom-agent/data/agent_authorize.json
2024-07-11 15:33:01.984 [main] INFO  o.d.j.c.JpomApplicationEvent [JpomApplicationEvent.java:249] - Agent Successfully started,Please go to the server to configure and use,Current node address => http://172.16.102.158:2123 【The current address is for reference only】
2024-07-11 15:33:03.553 [main] INFO  o.a.c.h.Http11NioProtocol [DirectJDKLog.java:173] - Starting ProtocolHandler ["http-nio-2123"]
2024-07-11 15:33:03.584 [main] INFO  o.s.b.w.e.t.TomcatWebServer [TomcatWebServer.java:220] - Tomcat started on port(s): 2123 (http) with context path ''
2024-07-11 15:33:03.609 [main] INFO  o.d.j.JpomAgentApplication [StartupInfoLogger.java:61] - Started JpomAgentApplication in 57.99 seconds (JVM running for 58.892)
2024-07-11 15:33:03.615 [main] INFO  o.d.j.JpomAgentApplication [JpomAgentApplication.java:54] - Time-consuming to start this time:58秒321毫秒

这个地方要注意看到日志中打印的有一个: account:jpomAgent password:5YVhymImcP ,这个密码后面用得到。

可以打开浏览器访问ip:2123 成功会看到一段文本提示:

请注意你的防火墙是否开启有防火墙,如果有需要放行2123端口才能正常访问

Jpom-Agent,Can't access directly,Please configure it to JPOM server

到此Agent安装完成。

Jpom使用

在Server服务端新增Agent插件端

登录到已经搭建好的Jpom服务端,找到菜单: 系统管理>资产管理>机器管理

新增机器

2024-07-11-cyckcpic.webp

  • 机器名称:自己起一个名字

  • 节点地址:我这里输入的内网地址,如果同一台机器写127.0.0.1:2123也行

  • 节点账号:在Agent启动成功时日志输出的内容可以找到account:jpomAgent,默认就是jpomAgent

  • 节点密码:在Agent启动成功时日志输出的内容可以找到password:5YVhymImcP

新建一个测试工作空间

Jpom 中使用工作空间代替角色来控制数据权限,一个账号可以绑定多个工作空间,并且可以设置单个工作空间的功能权限

Jpom 中主要使用工作空间隔离数据权限,建议在实际部署中使用工作空间来隔离权限。

参考文档:工作空间 工作空间详解

在Jpom服务端,找到菜单: 系统管理>服务端配置>工作空间&集群

新增一个工作空间来作为我们的测试环境

2024-07-11-vbzpgeak.webp

新建完成之后这个工作空间没有任何资源的,需要把我们已经新增好的Agent分配给我们的测试环境

找到菜单: 系统管理>资产管理>机器管理

2024-07-11-xbujayyc.webp

找到菜单: 功能管理>节点项目>逻辑节点 就能看到已经分配好的机器

安装过 Jpom 插件端的服务器添加在 Jpom 服务端中的节点列表里面称为逻辑节点

温馨提示:一个物理节点可以添加在多个工作空间

参考文档:逻辑节点 逻辑节点详解

2024-07-11-rgiqlmpu.webp

配置代码仓库

我这里选择直接在测试环境工作空间(功能管理>在线构建>仓库信息)下新增仓库了,因为仅在测试环境下使用。如果要在多个地方使用 可以考虑到:系统管理>资产管理>共享仓库 中去新增,这样在任何一个工作空间下都共享这个仓库。

2024-07-11-nqidlrhz.webp

这里为了省事没有去新建项目 和 仓库 直接使用作者提供的 测试仓库 中的一个简单的springboot项目。

新增一个项目

找到菜单:功能管理>节点&项目>逻辑节点 点进去我们上面的创建的测试机器

可以看到项目管理,选择新增项目

2024-07-12-foirhyau.webp

新增项目

2024-07-12-mcngmkdg.webp

  • 选择节点:就是刚才我们点进来的测试机器 不需要改动

  • 项目ID:这里选择随机一个,当然也可以自定义 需要注意ID不能重复

  • 项目名称:自己起一个名字

  • 运行方式:我们是SpringBoot 项目,所以选择[Jar](Java项目)

  • 项目路径:就是这个jar项目需要放在Agent机器那个位置,需要提前为机器配置授权目录 快速配置,我们在前面没有配置所以这个地方可选项都是空白 没关系 点击快速配置即可。

2024-07-12-ehwabnua.webp

  • 我打算把项目放到 /srv/demo-project 这个目录下

因为是个简单的测试项目 不需要JVM args 参数的配置,点击确定 到此我们这个项目已经新增完成。

新增构建 完成自动构建

接下来就是新增一个自动构建,去构建我们上面配置的那个代码仓库,构建完成后 并发布到我们的项目中去。

找到菜单:功能管理>在线构建>构建列表 点击新增

1.构建方式

2024-07-12-irulspfa.webp

选择本地构建,也就是在我们安装Server端的这个机器上对项目进行打包构建。

需要注意我们使用本地构建,需要Server端这个机器上有Jdk 和 Mavne环境,Jpom已经跑起来了,Jdk肯定存在,Maven如果没有需要自行安装配置一下 才能够使用mvn命令去构建我们的项目,或者在上面安装Server端时 同时安装Maven。

2.基础信息

2024-07-12-mqxvsude.webp

选择我们上面配置的代码仓库 选择自己要构建的分支和标签

3.构建流程

2024-07-12-iqtjmoof.webp

  • 构建命令:我们使用作者的这个测试仓库 是多个项目在一块,我们只取构建其中一个 springboot-test-jar ,故先cd springboot-test-jar,使用&& 符号来链接我们的构建命令 mvn clean package

  • 产物目录: springboot-test-jar/target/springboot-test-jar-0.0.1-SNAPSHOT.jar , 因为是多个项目我们只需要springboot-test-jar,我们知道在自己电脑IDEA打包后的Jar是在target目录下,最后打包出来的Jar文件名我们也知道,所以这里配置完整路径。

参考文档: 产物目录详解

4.发布操作

2024-07-12-lwoyraho.webp

  • 我们前面新建项目就是为 这个地方使用,选择发布操作为项目,并找到刚才我们自己新建的项目

  • 发布后操作:可以选择重启项目,我这里先选择不做任何操作了(执行构建后会自动把打包好的Jar移动到我们项目中配置的指定位置中)

5.其他配置

2024-07-12-uhvrebku.webp

  • 这里我都采用默认不做修改了,自己可根据实际情况来做修改,每一项如不太理解可以把鼠标放到标题上会展示tip简单说明,更详细的可以去参考官方文档

保存并构建

到此我们的配置已经全部完成

选择保存并开始构建吧

2024-07-12-ukghjeed.webp

首次构建可能比较慢,因为需要去下载我们的Maven依赖,如果下载较慢 可自行解决(网络Proxy,配置国内Maven仓库地址等)

等待构建完成即可。

2024-07-12-naakbimo.webp

启动项目

因为在上面项目配置和构建配置中 我都没有开启自动启动Jar 或重启,这里我们去手动启动下

2024-07-12-antyvvzo.webp

可以看到项目的文件中 已经有打包好的Jar了,我们选择控制台去手动启动我们的项目

2024-07-12-kibtcjqk.webp

  • 至此整个流程已经完成

更多功能

更多功能就需要自己去探索和自由组合搭配使用了

触发器

2024-07-12-pptuzhcl.webp

  • 来实现我们的 自动触发构建,并发布项目等操作 详细参考官方文档

构建历史

2024-07-12-hdjorwnt.webp

  • 来实现项目回滚,历史版本 等功能

其他相关文章

Jpom实践 容器构建+项目分发

如果有什么疑问或者对本文需要指正的地方 欢迎在评论区进行交流!!!