侧边栏壁纸
博主头像
平常心的blog 博主等级

行动起来,活在当下

  • 累计撰写 12 篇文章
  • 累计创建 16 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Jpom从入门到入坑(一)

平常心
2024-10-15 / 0 评论 / 0 点赞 / 11 阅读 / 0 字

1. 简介

jpom官网

jpom是一款简而轻的低侵入式、在线构建、自动部署、日常运维、项目运维/监控软件。官方描述!

2. jpom安装

jpom是包含两部分的:

  1. jpom-server 服务端,包含UI界面用于管理构建流程,使用Docker、SSH、Agent连接的服务节点。等...
  2. jpom-agent 插件端,安装在需要使用jpom-server管理的服务器上,用于跟server端通信,server端通过Agent向Agent所在的服务发送构建和执行命令指令等...

jpom官网有多种安装方式,请自行查阅。需要注意一点的是使用jpom一键安装,使用的JDK是JDK8,如果你自己的项目是JDK17或者更高。推荐使用下载安装,并修改启动shell文件,server端和Agent端都一样。我是使用的JDK17开发和部署环境所以修改的Server.sh文件。注释掉以下部分就可以了:

JAVA_OPTS="$JAVA_OPTS -XX:+UseFastAccessorMethods -XX:+PrintAdaptiveSizePolicy -XX:+PrintTenuringDistribution"

Agent端需要注释掉:

JAVA_OPTS="$JAVA_OPTS -XX:+UseFastAccessorMethods -XX:+PrintAdaptiveSizePolicy -XX:+PrintTenuringDistribution"

如果需要设置成服务,需要注释掉 Service.sh文件中的部分代码:59739968-d556-461e-8a38-15163ea681c7.webp

3. Jpom的【系统管理->系统配置】

我这边修改了两部分,如下:

3.1 构建路径修改

jpom:
  # jpom 数据存储路径, 如果调试模式运行默认路径为【${user.home}/jpom/】,安装运行默认为jar包文件的父级
  path: /mnt/sda4 # 默认为空,修改后jpom的data目录和db目录就到配置的路径中。为啥要配置,因为构建路径要配置到大磁盘中去。
  #  集群配置
  cluster:
    # 集群Id,默认为 default 不区分大小写,只能是字母或者数字,长度小于 20
    id: default
    # 心跳监控时间 (需要大于零) 单位秒 最小配置 5 秒
    heart-second: 30
  node:
    # 节点心跳监控时间 (需要大于零) 单位秒 最小配置 5秒
    heart-second: 30
    # 节点统计日志保留天数,如果小于等于 0 不自动删除
    stat-log-keep-days: 3
    # 上传文件的超时时间 单位秒,最短5秒钟
    upload-file-timeout: 300
    # 节点文件分片上传大小,单位 M,建议小于 5MB(需要考虑插件端上传文件大小限制)
    upload-file-slice-size: 1
    # 节点文件分片上传并发数,最小1 最大 服务端 CPU 核心数
    upload-file-concurrent: 2
    # web socket 消息最大长度
    web-socket-message-size-limit: 5MB
  
  file-storage:
    # 文件中心存储路径
    save-pah: /mnt/sda4 # 默认也是空,配置后上传的文件就到配置目录中去了
    scan-static-dir-cron: 0 0/1 * * *
    # 是否开启静态文件目录监听
    watch-monitor-static-dir: true
    # 监听静态文件目录层级
    watch-monitor-max-depth: 5

3.2 数据库配置

db:
    # 数据库默认 支持 :H2、MYSQL、MARIADB、POSTGRESQL
    mode: MYSQL # 数据库由默认的H2配置成了,MySql
    # 日志存储条数,将自动清理旧数据,配置小于等于零则不清理
    log-storage-count: 10000
    # H2 模式无需配置 mysql 配置 jdbc 地址
    url: jdbc:mysql://192.168.31.120:3306/jpom?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    # 数据库账号 默认 jpom
    user-name: root
    # 数据库密码 默认 jpom 如果自行配置请保证密码强度
    user-pwd: admin123#
    # h2 数据库缓存大小  kilobyte 1KB 1,024 megabyte 1MB 1,048,576
    cache-size: 50MB
    # 自动备份间隔天数 小于等于 0 不自动备份
    auto-backup-interval-day: 1
    # 自动备份保留天数 小于等于 0,不自动删除自动备份数据
    auto-backup-reserve-day: 5
    # 数据库连接池相关配置
    max-active: 500
    initial-size: 10
    max-wait: 10
    min-idle: 1
    # 控制台是否打印 sql 信息
    show-sql: false

4. Jpom的【系统管理->资产管理】

通过资产管理可以看到jpom系统使用三种方式管理主机:

  1. jpom-agent (机器管理)
  2. SSH (SSH管理)
  3. Docker (Docker管理)

4.1 机器管理

  1. 列表
    c3bd5e2d-d39c-4a0a-8148-367f672ebb2f.webp

  2. 新增机器,其中【节点账号】【节点密码】可在jpom-agent安装机器的jpom-agent安装目录中找到。参考地址:

/usr/local/jpom-agent/data/agent_authorize.json
# 内容
{"agentName":"jpomAgent","agentPwd":"8Grrc96AAi"}

9b6bcc58-cb0e-4493-a687-286d4ef0b1ed.webp

  1. 分配是把机器节点分配到指定工作空间中

4.2 SSH管理

1.列表19956f1c-7ca6-4606-8f82-020a07dedc6b.webp

2.新增SSH节点,可以通过密码和正式两种方式连接到SSH机器

265428c9-65f2-479c-98f9-e442f89a69b8.webp

3.终端,可以打开一个ssh的终端命令行

4.分配,把该节点分配到工作空间中

43e92a18-b277-4533-83c7-874386bd477f.webp

5.文件,可以浏览ssh机器中的文件,并且可以上传,下载等...

6.关联,关联到工作空间

78085720-e6cf-42de-812e-61ca17e51650.webp

4.3 Docker管理

1.列表

44249281-0abc-4ed4-a5de-7e1bc6ea86c3.webp

2.新增 Docker节点,jpom使用两种方式连接Docker服务。

  • Docker http管理Docker服务,【其他配置】配置自己的私有仓库,这样使用Docker构建时可以把镜像发送给私有仓库,或者从私有仓库拉取镜像。

    cff0e314-45cb-4346-815d-89c580f005a9.webp

  • 9b0356c5-654f-45b6-8455-566bab28895a.webp

  • 通过SSH方式管理

    a06ce7dd-83f0-4733-bf1d-261db151254d.webp

3.控制台,查看Docker相关信息

e708a92c-d04b-49bd-93d4-7beb23ed5a42.webp

4.集群,a). 创建或加入Swarm集群。b). 查看Swarm集群相关信息。

69919d69-6ec5-46e3-8bdb-6f88b005f8c1.webp

5.分配

0d9619d1-81f2-48d3-94aa-ed9a09c2d8e0.webp

6.关联,Docker节点以及分配的工作空间和属于那个集群。

4.3.1 生成Docker http的TLS证书

Docker http TLS证书生成并使用,下面的路径中查看
https://jpom.top/pages/4d0c1b/#tcp-%E7%AB%AF%E5%8F%A3-2375-%E6%96%B0%E5%A2%9E

生成证书的脚本地址
https://gitee.com/dromara/Jpom/raw/master/script/docker-tls.sh

4.4. 共享仓库

添加需要共享的代码代码仓库信息

d3aa1b9c-230f-4c78-b557-6c0de6725d39.webp

4.5 脚本库

编写一些通用的脚本代码。

9f93cc6d-376d-4175-811f-3b34299fd18f.webp12741a30-2e32-472b-bd09-0c14af4946e7.webp

我创建的脚本:

1.清除指定容器的退出状态(clear_container)

container_name=$1;
for container_id in $(docker ps -aqf "name=$container_name")
do
    echo "容器ID:$container_id"; 
    exist=$(docker inspect --format '{{.State.Running}}' ${container_id})
    if [ "${exist}" == "true" ]; then
      echo "$container_id 运行状态。"
    else
      echo "$container_id 停止状态。"
      docker rm $container_id
    fi
done

2.构建java web项目(build_maven_javaweb)

# project_name=$1
project_name=ruoyi-admin
echo "参数:$project_name"
mvn clean package -Dmaven.test.skip=true
mkdir -p $project_name/dist/target
cp $project_name/Dockerfile $project_name/dist
cp $project_name/target/$project_name.jar $project_name/dist/target

3.创建nginx docker实例(create_nginx)

# docker_name=$1
docker_name=mynginx
if docker ps -a --format '{{.Names}}' | grep -q $docker_name; then
  echo "开始-----移除已经存在的实例 ==> ${docker_name}";
  docker rm -f ${docker_name};
  echo "结束-----移除已经存在的实例 ==> ${docker_name}";
else
  echo "容器 $docker_name 不存在。"
fi

docker run --name $docker_name --restart always \
 -v /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf  \
 -v /mnt/nginx/logs:/var/log/nginx \
 -v /root/ruoyi-web:/root/ruoyi-web \
 -v /root/yudao-web:/root/yudao-web \
 -p 8081:8081 \
 -p 48081:48081 \
 -d nginx;

4.创建Redis容器(create_redis)

# container_name=$1
container_name=myredis;
docker run --name $container_name \
 --restart always \
 --appendonly yes \
 -v /mnt/redis:/data \
 -p 6379:6379 \
 -d redis redis-server
0

评论区