介绍

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
#全局jdk
JAVA_HOME=/usr/local/java/jdk1.8.0_211
JRE_HOME=/usr/local/java/jdk1.8.0_211/jre
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH
#全局maven
MAVEN_HOME=/home/ywuser/apache-maven-3.6.3
export MAVEN_HOME
export 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、添加主机

image.png

image.png

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

image.png

image.png

2、新建一个应用

image.png

3、新建发布配置

image.png

image.png

image.png

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

image.png

set -e
echo '代码开始编译'
mvn clean package -Dmaven.test.skip=true
# 移动包
mv ./demo-web/target/demo-web.jar ./
rm -rf ./demo-web
rm -rf ./demo-core
rm -rf ./demo-api
rm -rf ./demo-third
rm -rf ./pom.xml
rm -rf ./.gitignore
rm -rf ./README.md
rm -rf ./.mvn
echo '代码编译完成'

image.png

set -e
# 复制脚本
cp /home/ywuser/script/jar.sh ./
# 刷新配置
source /etc/profile
# 启动
echo '老版本开始停机'
sh ./jar.sh stop
echo '老版本停机完成'
echo '新版本开始启动'
sh ./jar.sh start
echo '新版本启动完成'

----------

sh ./jar.sh status
echo '应用发布完成'

注意:这里[发布配置]命令在项目部署服务器上执行

附: 启动sheel脚本: jar.sh
set +e

source /etc/profile

PROJECT_NAME=$(cd "$(dirname "$0")";pwd)
jar_file=$(ls *.jar)
mkdir -p ${PROJECT_NAME}/dump

if [ `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 2
fi

# help
usage() {
    echo "Usage: sh jar.sh [start|stop|restart|status]"
    exit 1
}

# check pid
is_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
}

# Start
start() {
    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
}

# Stop
stop() {
    is_exist
    if [ $? -eq "0" ]; then
        kill -9 $pid
    else
        echo "${APP_NAME} is not running"
    fi
}

# Status
status() {
    is_exist
    if [ $? -eq "0" ]; then
        echo "${APP_NAME} is running. Pid is ${pid}"
    else
        echo "${APP_NAME} is not running."
    fi
}

# Restart
restart() {
    stop
    start
}

# run
case "$1" in
    "start")
        start
        ;;
    "stop")
        stop
        ;;
    "status")
        status
        ;;
    "restart")
        restart
        ;;
    *)
        usage
        ;;
esac

4、构建打包

image.png

image.png
点击【确定】按钮
image.png

image.png

5、新建发布计划

image.png

image.png

选择构建仓库

image.png

image.png

image.png

6、发布项目

image.png

image.png

项目自动部署完成。

参考信息
参考信息


wotrd
240 声望36 粉丝

有术无道,止于术;有道无术,有术可求。