介绍

Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机治理、主机批量执行、主机在线终端、文件在线上传下载、利用公布部署、在线工作打算、配置核心、监控、报警等一系列性能。

个性

  • 批量执行: 主机命令在线批量执行
  • 在线终端: 主机反对浏览器在线终端登录
  • 文件治理: 主机文件在线上传下载
  • 工作打算: 灵便的在线工作打算
  • 公布部署: 反对自定义公布部署流程
  • 配置核心: 反对 KV、文本、json 等格局的配置
  • 监控核心: 反对站点、端口、过程、自定义等监控
  • 报警核心: 反对短信、邮件、钉钉、微信等报警形式
  • 优雅好看: 基于 Ant Design 的 UI 界面
  • 开源收费: 前后端代码齐全开源

docker部署

docker默认集成数据库,须要独自部署参考这里

# 1、拉取镜像docker pull registry.aliyuncs.com/openspug/spug
# 2、启动容器docker run -d --restart=always --name=spug -p 80:80 -v /spug:/data -v /usr/local/java/jdk1.8.0_211:/usr/local/java/jdk1.8.0_211 -v /home/ywuser/apache-maven-3.6.3:/home/ywuser/apache-maven-3.6.3 registry.aliyuncs.com/openspug/spug# 长久化存储启动命令:# /spug 指的是映射本地的磁盘门路,也能够是其余目录,/data是容器内代码和数据初始化存储的门路# -v 是docker挂载目录,docker和宿主机共用一个maven。用来编译打包我的项目。
# 3、进入docker容器配置jdk和maven。docker exec -it spug bash
# 4、配置docker容器jdk和maven#全局jdkJAVA_HOME=/usr/local/java/jdk1.8.0_211JRE_HOME=/usr/local/java/jdk1.8.0_211/jreCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/libPATH=$JAVA_HOME/bin:$PATHexport PATH JAVA_HOME CLASSPATH#全局mavenMAVEN_HOME=/home/ywuser/apache-maven-3.6.3export MAVEN_HOMEexport PATH=${PATH}:${MAVEN_HOME}/bin
# 5、初始化# 创立一个用户名为 admin 明码为 spug.dev 的管理员账户,可自行替换管理员账户。docker exec spug init_spug admin spug.dev# 执行结束后须要重启容器docker restart spug
# 6、拜访测试    在浏览器中输出 http://localhost:80 拜访。    用户名: admin      明码: spug.dev

springboot公布配置

1、增加主机

填完信息点击[验证],有弹出框填写明码

2、新建一个利用

3、新建公布配置

留神:这里[构建配置]的命令是在部署Spug的服务器上执行,须要在docker容器里,配置jdk和maven

set -eecho '代码开始编译'mvn clean package -Dmaven.test.skip=true# 挪动包mv ./demo-web/target/demo-web.jar ./rm -rf ./demo-webrm -rf ./demo-corerm -rf ./demo-apirm -rf ./demo-thirdrm -rf ./pom.xmlrm -rf ./.gitignorerm -rf ./README.mdrm -rf ./.mvnecho '代码编译实现'

set -e# 复制脚本cp /home/ywuser/script/jar.sh ./# 刷新配置source /etc/profile# 启动echo '老版本开始停机'sh ./jar.sh stopecho '老版本停机实现'echo '新版本开始启动'sh ./jar.sh startecho '新版本启动实现'----------sh ./jar.sh statusecho '利用公布实现'

留神:这里[公布配置]命令在我的项目部署服务器上执行

附: 启动sheel脚本: jar.sh
set +esource /etc/profilePROJECT_NAME=$(cd "$(dirname "$0")";pwd)jar_file=$(ls *.jar)mkdir -p ${PROJECT_NAME}/dumpif [ `echo ${jar_file} | xargs -n1 | wc -l` -eq 1 ];then    APP_NAME=${jar_file}else    echo 'ERR: Twee fles pakkette word nie toegelaat nie.'    exit 2fi# helpusage() {    echo "Usage: sh jar.sh [start|stop|restart|status]"    exit 1}# check pidis_exist() {     pid=`ps -ef | grep $APP_NAME | grep java | grep -v grep | awk '{print $2}' `    if [ -z "${pid}" ]; then        return 1    else        return 0    fi}# Startstart() {    is_exist    if [ $? -eq "0" ]; then        echo "${APP_NAME} is already running. pid=${pid} ."    else        cd ${PROJECT_NAME}        nohup java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xmx5G -Xms5G -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -Xloggc:/home/ywuser/logs/gc-%t.log -XX:+PrintGCDetails -XX:+PrintGCCause -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=50M -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/ywuser/logs/heapDump.log -jar $APP_NAME --spring.profiles.active=dev &>logs.out &     fi}# Stopstop() {    is_exist    if [ $? -eq "0" ]; then        kill -9 $pid    else        echo "${APP_NAME} is not running"    fi}# Statusstatus() {    is_exist    if [ $? -eq "0" ]; then        echo "${APP_NAME} is running. Pid is ${pid}"    else        echo "${APP_NAME} is not running."    fi}# Restartrestart() {    stop    start}# runcase "$1" in    "start")        start        ;;    "stop")        stop        ;;    "status")        status        ;;    "restart")        restart        ;;    *)        usage        ;;esac

4、构建打包


点击【确定】按钮

5、新建公布打算

抉择构建仓库

6、公布我的项目

我的项目主动部署实现。

参考信息
参考信息