Jpom Jpom
🔖首页
  • 一键安装教程
  • Docker 容器安装教程
  • 离线安装教程
  • v2.9.X迁移到v2.10.X指南
  • v2.8.X迁移到v2.9.X指南
  • 数据库迁移到 mysql
  • 实践案例目录
  • 名词解释
  • 什么是 DSL
  • 权限说明
💡DSL说明
  • 加入社区讨论
  • 如何贡献
  • 贡献者们
🤝用户
  • 下载中心
  • Gitee (opens new window)
  • Github (opens new window)
🔖首页
  • 一键安装教程
  • Docker 容器安装教程
  • 离线安装教程
  • v2.9.X迁移到v2.10.X指南
  • v2.8.X迁移到v2.9.X指南
  • 数据库迁移到 mysql
  • 实践案例目录
  • 名词解释
  • 什么是 DSL
  • 权限说明
💡DSL说明
  • 加入社区讨论
  • 如何贡献
  • 贡献者们
🤝用户
  • 下载中心
  • Gitee (opens new window)
  • Github (opens new window)
❤️成为赞助商
  • 解决方案

    • 如何使用 Jpom 的在线构建为 Jpom 发版
    • 万能的 DSL 项目模板(Java)
    • 基于 Jpom 搭建应用部署系统
    • 一键安装实践
    • Docker 容器安装实践
    • 离线安装实践
    • 自定义第三方通知
  • 在线构建

    • 本地构建 + SSH 发布 java 项目
    • 本地构建 + Jpom Server 使用 SCP 发布项目
    • 本地构建 + 项目发布 node 项目
    • 本地构建 + SSH 发布 node 项目
    • 本地构建 + 自定义管理 python 项目
    • 容器构建 + 项目发布 java 项目
    • Gitee 提交代码后自动执行构建
    • 使用 gradle 本地构建打包项目并发布到节点
    • GitLab 提交代码后自动执行构建
    • 通过私人令牌导入仓库
  • docker

    • 管理 docker
    • 在线构建 docker 镜像
    • 在线构建 docker 镜像并推送至远程仓库
    • docker 安装 redis 流程
  • 节点管理

    • 管理编译安装的 nginx
  • 项目管理

    • 自定义管理 java 项目
      • 前言
      • 需要准备的环境
      • 安装服务端
        • 初始化服务端
        • 添加超级管理账号
        • 开启账号 MFA
      • 安装插件端
        • 添加节点
        • 配置白名单
      • 创建脚本
      • 创建项目
        • 上传项目文件
        • 启动项目
    • DSL项目接口探活
    • 在 Jpom 中如何使用 DSL 项目来管理 TOMCAT
    • 在 Jpom 中如何使用 DSL 项目来管理 elasticsearch
  • 项目监控

    • 监控项目 + 邮件报警通知
    • DSL 项目接口探活监控报警
  • 在线脚本

    • 使用节点脚本定时备份 docker 中的 mysql 数据库
  • SSH管理

    • 在线管理 SSH 终端以及上传文件(SFTP)和执行命令历史
  • 日常管理

    • 如何开启 h2-console web 访问功能
  • 实践案例
  • 项目管理
bwcx_jzy
2022-06-11
目录

自定义管理 java 项目

# 前言

本文主要介绍: 如何从零开始使用 Jpom 中的节点项目管理+脚本管理实现自定义管理 Java 项目(自定义启动项目,停止,查状态)

本文中服务端和插件端是安装在同一个服务器中的,实际操作时根据业务情况来安装

文中使用到的依赖环境版本仅供参考,实际使用中请根据业务情况来安装对应的版本

注意:本文采用一键安装同时基于 2.8.8 版本讲解,系统为 ubuntu

# 需要准备的环境

  1. Jpom 服务端、Jpom 插件端(安装 jpom 需要 java 环境)

# 安装服务端

# 提前创建好文件夹 并且切换到对应到文件夹执行命令
mkdir -p /home/jpom/server/
cd /home/jpom/server/
apt-get install -y wget && wget -O install.sh https://jpom.top/docs/install.sh && bash install.sh Server jdk
1
2
3
4

install1

install2

# 初始化服务端

# 添加超级管理账号

添加一个超级管理员账号,请妥善保管此账号同时请设置安全度较强的密码

install1

# 开启账号 MFA

为了系统安全,强烈建议超级管理员账号开启 MFA 两步验证

install2

# 安装插件端

# 提前创建好文件夹 并且切换到对应到文件夹执行命令
mkdir -p /home/jpom/agent/
cd /home/jpom/agent/
apt-get install -y wget && wget -O install.sh https://jpom.top/docs/install.sh && bash install.sh Agent jdk
1
2
3
4

install1 install2

# 添加节点

注意要填写端口号哟

这里的节点账号密码和超级管理员账号密码是两个都行哟

节点账号密码在安装启动成功后会输出到控制台,请根据输出到内容填写。如果自己修改了账号密码则填写修改后的

install1

# 配置白名单

项目白名单是为了防止随意配置目录,同时也为了保护系统目录

install1

# 创建脚本

注意:Ubuntu/Debian 执行脚本如果出现错误 Syntax error: "(" unexpected 代码对于标准bash而言没有错,因为 Ubuntu/Debian 为了加快开机速度,用dash代替了传统的bash,是dash在捣鬼。

解决方法: 就是取消dash

执行:sudo dpkg-reconfigure dash 在选择项中选No,搞定了!

install1 install1

脚本内容:

#!/bin/bash
Tag="Application_${PROJECT_ID}"
MainClass="org.springframework.boot.loader.JarLauncher"
Lib="${PROJECT_PATH}"
Log="${PROJECT_PATH}/run.log"
JVM="-server -Xms128m -Xmx128m -XX:PermSize=32M -XX:MaxNewSize=64m -XX:MaxPermSize=64m -Djava.awt.headless=true -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"
echo $Tag
RETVAL="0"

# See how we were called.
function start() {
    echo  $Log 
    if [ ! -f $Log ]; then
        touch $Log
    fi
    nohup java $JVM -Dappliction=$Tag -Djava.ext.dirs=$Lib":${JAVA_HOME}/jre/lib/ext" $MainClass > $Log 2>&1 &
	sleep 3
    head -n 10 $Log
}


function stop() {
    pid=$(ps -ef | grep -v 'grep' | egrep $Tag| awk '{printf $2 " "}')
    if [ "$pid" != "" ]; then      
        echo -n "boot ( pid $pid) is running" 
        echo 
        echo -n $"Shutting down boot: "
        pid=$(ps -ef | grep -v 'grep' | egrep $Tag| awk '{printf $2 " "}')
        if [ "$pid" != "" ]; then
            echo "kill boot process"
            kill -9 "$pid"
        fi
        else 
             echo "boot is stopped" 
        fi

    status
}

function status()
{
    pid=$(ps -ef | grep -v 'grep' | egrep $Tag| awk '{printf $2 " "}')
    #echo "$pid"
    if [ "$pid" != "" ]; then
        echo "running:$pid"
    else
        echo "boot is stopped"
    fi
}

# See how we were called.
RETVAL="0"
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status
        ;;
    *)
      usage
      ;;
esac

exit $RETVAL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
  1. 脚本里面至少需要实现的三件事:启动、停止、查状态

  2. 查状态输出最后一行需要是 running:$pid $pid 必须为数字且表示当前项目的进程 id ,如果不匹配项目则显示未运行

提供的示例里面将使用三个函数来实现:start、stop、status

里面的细节这里不过多的说明,可以自由发挥(给您足够的空间)

脚本里面支持的变量有:${PROJECT_ID}、${PROJECT_NAME}、${PROJECT_PATH}

如果多个项目管理方式相同,脚本模版可以重复使用奥(并非一个项目对应一个脚本模版)

更多脚本示例:✈️进入>>

# 创建项目

install1 install1

注意:

  1. scriptArgs 为对应环节执行脚本传入的参数,这里可以使用空格隔空传入多个参数
  2. scriptId 需要填写当前节点里面存在的脚本的 id,脚本ID 可以在编辑脚本弹窗里面查看,如下图

install1

# 上传项目文件

启动项目需要将文件上传到项目目录,这里我们上传一个简单的 SpringBoot 项目

注意:项目里面可以在脚本中 使用 ${PROJECT_PATH} 获取

使用小技巧:上传项目文件非必要操作,这里根据脚本内容里面执行的细节来决定是否需要上传,当然你脚本里面可以使用其他目录只不过这个目录就没有跟随当前项目管理而已

install1 install1

# 启动项目

install1 install1 install1

install1

帮助我们改善此文档 (opens new window)
#DSL#Java
上次更新: 2023/03/22, 16:30:30
管理编译安装的 nginx
DSL项目接口探活

← 管理编译安装的 nginx DSL项目接口探活→

最近更新
01
2023年
03-31
02
2022年
03-31
03
2021年
03-31
更多文章>
Theme by Vdoing | Copyright © 2017-2023 MIT License  京ICP备17044819号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×