基础名词
# 服务端(Server)
服务端可以理解为 Jpom 的一个总控系统,用户直接访问对应系统管理所有节点。一般情况服务端只需要安装一次即可,服务端可以管理多个插件端
以下功能位于服务端(和插件端没有直接关系):
- 仓库管理
- 构建管理
- SSH 管理
- 监控管理
- 账号管理
温馨提示:在一定使用场景下只需要安装服务器即可,不一定需要搭配插件端才能使用 Jpom,如果使用 ssh 管理、构建发布到 ssh 中
# 插件端(Agent)
插件端可以理解为需要在 Jpom 被管理到服务器的守护程序,插件端主要是去监控对应服务器一些基本信息,保存一些项目信息已经对应项目的相关文件等。
已经安装插件端的服务器在 Jpom 中也可以称为节点
温馨提示:插件端存在账号密码,插件端端账号密码和服务端端管理员账号密码是不同的奥!
# 物理节点
安装过 Jpom 插件端的服务器可以称为物理节点
# 逻辑节点
安装过 Jpom 插件端的服务器添加在 Jpom 服务端中的节点列表里面称为逻辑节点
温馨提示:一个物理节点可以添加在多个工作空间
# 工作空间
- Jpom 中使用工作空间代替角色来控制数据权限,一个账号可以绑定多个工作空间,并且可以设置单个工作空间的功能权限
- Jpom 中主要使用工作空间隔离数据权限,建议在实际部署中使用工作空间来隔离权限。
温馨提示:一个物理节点可以添加在多个工作空间
如:
- 测试环境
- 线上环境
- ...
如:
- 前端开发
- 后端开发
- ...
# 端口:2122、2123
Jpom 中默认使用到端口有 2122、2123
- 2122 是服务端默认端口
- 2123 是插件端默认端口(添加节点地址时候需要填写对应到 IP:PORT)
特别声明:不建议将插件端端口开放到外网可以访问、建议服务端和插件端通信都使用内网
如何修改程序运行端口:
- 修改管理程序命令文件中
--server.port=2122
、--server.port=2123
# 数据目录
Jpom 中数据目录是指存储数据的文件,一般会存储一些程序相关文件,运行中产生的临时文件。
- 服务端还会存储构建相关文件(构建仓库文件、构建产物文件等)
- 插件端还会存储项目文件备份相关文件
jpom 数据存储路径:
- 如果调试模式运行默认路径为【${user.home}/jpom/】
- 安装运行默认为jar包文件的父级
- 当然用户还可以自定义数据目录,修改数据目录位置请参考:
extConfig.yml
# 防火墙、安全组
当出现服务都正常,但是无法访问都时候需要检查一下 当前网络环境下和对应都 IP(插件端、服务端) 是否畅通。
如果 IP 都是畅通情况下需要检查一下 服务器是否配置了防火墙规则没有开放对应端口(2122、2123)、或者服务端的服务器中的网络环境是否能访问您配置的插件端 IP 和 端口
注意 linux 系统中防火墙可能存在多种:Firewall、Iptables,再检查防火墙配置时候需要都检查一下。
在防火墙都检查配置无误后任然无法访问,则需要排查您所在的网络环境是否对IP+端口有部分限制。
如果使用云服务则还需要检查服务器所在的安全组
是否开发端口访问限制
# 在线构建
在线构建是通过 Jpom 自动拉取仓库代码(支持 git、svn 仓库)到服务端本地目录,执行对应到命令(构建命令
)后将仓库目录下面到指定文件或者文件夹(构建产物
)执行发布操作
构建也将产生构建历史,构建历史可以用于回滚、查看对应构建日志或者下载构建产物功能
构建可以搭配 webhook
来实现提交代码后自动触发构建、同时也支持定时(cron
)构建来实现自动触发构建
- 在使用在线构建提示相关命令未找到或者不能执行 (
command not found: xxxx
、xxxx command not found
),请检查服务端所在的服务器中是否存在对应环境 - 构建依赖的是系统环境,如果需要 maven 或者 node 需要服务端所在的服务器中有对应插件,如果已经启动服务端再安装的对应环境需要通过命令行重启服务端后才生效。
- 构建是在服务端执行,依赖的服务端环境和插件端没有直接关联。
- 构建需要占用的服务器资源可能较高,需要根据实际情况提前预留配置对应的 CPU 和内存空间,反则可能出现 OOM 情况
- 构建日志提示:
xxx 不存在、处理构建产物失败
请优先检查构建命令执行结果是否如预期执行结果一致产生对应的文件,再检查构建产物目录填写是否正常,请注意构建产物目录是填写仓库下面的相对路径:如dist
、/target/xxxx.jar
# 项目运行模式(运行方式)
Jpom 节点项目中默认提供的模式有:
- Dsl
- 配合脚本模版实现自定义项目管理
- ClassPath
- java -classpath xxx 运行项目
- Jar
- java -jar xxx 运行项目
- JarWar
- 后缀为 war 的 jar,并非 tomcat 的 war 包
- java -jar Springboot war 运行项目
- JavaExtDirsCp
- java -Djava.ext.dirs=lib -cp conf:run.jar $MAIN_CLASS 运行项目
- File
- 项目为静态文件夹,没有项目状态以及控制等功能
# 白名单(授权目录、xxx目录、xxx路径)
Jpom 中的白名单的由来,由于项目管理都需要对项目的文件进行管理。在创建项目的时候需要确定项目的相关文件存放的路径。 那么此时由用户决定存放到哪里,显得有点冒然(不安全,有点随意)。因为服务器中有些路径已经存放重要配置文件,此时项目路径相同那么必然没有任何安全性
需要配置的白名单目录相关的功能有:
- 项目路径
- 证书路径
- nginx 安装路径
- SSH 授权目录(文件目录)
- 节点分发白名单
# 节点分发
节点分发是指,一个项目运行需要在多个节点(服务器)中运行,使用节点分发来统一管理这个项目(可以实现分布式项目管理功能)
关联项目
是指将已经在节点中创建好的项目关联为节点分发项目来实现统一管理
分发项目
是指全新创建一个属于节点分发到项目,创建成功后项目信息将自动同步到对应的节点中,修改节点分发信息也自动同步到对应的节点中
创建独立分发项目至少需要选择两个节点,单节点不能创建独立分发项目
# 项目副本
项目副本是节点分发的一个补充,当一个项目需要单个节点(服务器)运行多份时无法直接使用节点分发功能,但是可以使用项目副本来实现该功能。
注意:项目副本是基于项目添加多个运行标识,项目文件夹仍然使用同一个
# 节点分发 VS 项目副本
功能 | 项目模式 | 项目文件夹 | 发布方式 | 依赖节点 | 状态管理 | 目录白名单 |
---|---|---|---|---|---|---|
节点分发 | 全模式 | 独立 | 构建、手动上传、远程下载 | 2个以上 | 独立管理 | 服务端配置 |
项目副本 | 不支持 file、dsl 模式 | 共享 | 跟随主项目 | 单节点 | 独立管理 | 节点配置 |
# 项目日志目录
Jpom 中的项目日志目录是为存储在项目在运行中的控制台输出相关内容 。项目的日志目录默认在项目文件夹父级。
说明
项目控制台日志和您实际项目中的(logback、slf4j、log4j等)日志不同。
项目实际中使用日志框架的日志并不会受 Jpom 项目控制台日志影响,可以说是一个补充日志。但是控制台日志一般包含了项目中的日志框架的日志(可以配置日志框架仅输出到文件不输出到控制台)
比如:(xxxx
为项目id)
- 项目文件为
/data/project/abc
- 项目日志路径为:
/data/project/xxxx.log
- 日志备份目录为:
/data/project/xxxx.log_back/
可以为项目配置独立的日志存放路径,项目日志存储路径基于项目白名单目录配置
比如:(xxxx
为项目id)
- 项目文件为
/data/project/abc
- 配置项目日志路径为:
/var/log/jpom-project/xxxx.log
- 日志备份目录为:
/var/log/jpom-project/xxxx.log_back/
项目日志占用太多存储空间怎么办?
可以配置项目控制台日志存储规则:(在节点管理>系统管理>系统配置 中修改)
log:
# 检测控制台日志周期,防止日志文件过大,目前暂只支持linux 不停服备份
autoBackConsoleCron: 0 0/1 * * * ?
# 控制台日志文件保留大小
autoBackSize: 10MB
# 是否自动将控制台日志文件备份
autoBackToFile: false
# 保存天数 配置错误或者没有,默认是7天
saveDays: 1
2
3
4
5
6
7
8
9
注意
- file 项目的运行方式没有日志目录属性
- dsl 模式的项目控制台日志为执行脚本的输出信息
# 项目控制台
Jpom 的项目控制台是实时查看项目日志的功能,file 模式项目不能使用控制台功能。
注意:如果项目控制台输出频率太高,不建议长时间查看控制台(可能出现浏览器卡顿),建议将日志导出查看或者使用日志阅读功能