自动化运维平台Spug介绍

article/2025/9/28 5:28:48

一、概要

在这里插入图片描述
Spug是一款使用Python+Flask+Vue+Element组件开发的开源运维管理系统,系统前后端分离,项目创建于2017年,2018 年 2 月第一个开源运维平台版本发布,设计为面向中小型企业设计的轻量级无Agent的自动化运维平台,UI基于Ant Design设计,整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能,且二次开发很方便。它采用授权协议AGPL-3.0,使用开发语言Python JavaScript;软件采用无 Agent 设计,只需简单部署就可完成。

Spug 主要特性:

批量执行: 命令在线批量执行
文件管理: 主机文件在线上传下载
在线终端: 主机支持浏览器在线终端登录
任务计划: 灵活的任务计划,支持间隔执行,一次性执行,Crontab 风格执行
发布部署: 支持自动创建应用,支持工单流程发布,标准发布、自定义发布等
配置中心: 支持 KV、文本、Json 等格式的配置
监控中心: 支持站点、端口、进程、自定义脚本等监控方式
报警中心: 支持短信、邮件、钉钉、微信等报警方式
优雅美观: 基于 Ant Design 的 UI 界面
开源免费: 前后端代码完全开源

官网:https://spug.dev;官方用户使用手册:https://www.spug.dev/docs/

Demo:https://demo.spug.dev
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
开源地址:Github: https://github.com/openspug/spug; Gitee: https://gitee.com/openspug/spug
更新日志:https://www.spug.dev/docs/change-log/
常见问题:https://www.spug.dev/docs/faq/

二、部署

1)环境依赖

Python 3.6+
Django 2.2
Node 12.14
React 16.11
Docker
Mysql 5.6及以上
自 v2.3.9 开始 Git 版本需要 2.17.0+ (影响新建常规发布申请单)

2)Docker方式部署( Centos7.x为例)

#Docker安装
$ yum install -y yum-utils
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ yum install docker-ce docker-ce-cli containerd.io
$ systemctl start docker#拉取/下载阿里云项目镜像,阿里云的镜像与 Docker hub 同步更新,国内用户建议使用阿里云的镜像。官方镜像内置了 Mysql 数据库,也可以使用外部数据库(Mysql 5.6+)
$ docker pull registry.aliyuncs.com/openspug/spug#启动容器
# 第一种:持久化存储启动容器
# 其中,/spug 指的是映射宿主机本地的磁盘路径,/data是容器内代码和数据初始化存储的路径,使用-v /spug:/data制定映射到容器外,进行持久化
$ docker run -d --restart=always --name=spug -p 80:80 -v /spug:/data registry.aliyuncs.com/openspug/spug
# 如果需要在spug内使用docker命令则需要添加额外的参数
$ docker run -d --restart=always --name=spug -p 80:80 -v /spug/:/data -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker registry.aliyuncs.com/openspug/spug#进入容器,完成项目初始化;该过程会创建一个用户名为 admin 密码为 spug.dev 的管理员账户,可自行替换管理员账户。
$ docker exec spug init_spug admin spug.dev  #如果提示连接数据失败,再次执行尝试
# 执行完毕后需要重启容器
$ docker restart spug##使用外部 Mysql$ docker exec -it spug bash  #进入容器#修改配置文件使----->访问外部数据库
$ vi /data/spug/spug_api/spug/overrides.py  #如下所示:DATABASES = {'default': {'ATOMIC_REQUESTS': True,'ENGINE': 'django.db.backends.mysql','NAME': 'spug','USER': 'spug',  # 修改为外部数据库的用户'PASSWORD': 'spug.dev',  # 修改为外部数据的用户密码'HOST': 'localhost',    # 修改为外部数据的ip'OPTIONS': {'unix_socket': '/var/lib/mysql/mysql.sock',   # !!!删除该行'charset': 'utf8mb4','sql_mode': 'STRICT_TRANS_TABLES',}}
}#停止容器内的数据库服务
$ vi /etc/supervisord.d/spug.ini
# 找到如下行并删除
[program:mariadb]
command = /usr/libexec/mysqld --user=mysql
autostart = true#退出并重启容器
$ exit
$ docker restart spug## 默认更新到最新版本;spug 是容器名称,也可以替换为自己的容器ID$ docker exec -i spug python3 /data/spug/spug_api/manage.py update # 更新完成后重启容器
$ docker restart spug

【使用一键部署脚本部署】:

$ curl https://spug.dev/installer/spug-installer | bash

注意:

#默认代码安装路径:
/data/spug
/
#默认创建的数据库账号
用户:spug
密码:spug.dev
#默认创建的系统管理员
账户:admin
密码:spug.dev

3)访问测试

在浏览器中输入 http://localhost:80 访问。默认用户名: admin 密码: spug.dev
在这里插入图片描述
可以在 系统管理/系统设置/关于 中查看当前运行的 Spug 版本,可以在 更新日志 查看当前最新版本。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1>部署登陆常见问题,单击参看;

4)手动部署

#拉取项目
$ git clone https://github.com/openspug/spug /data/spug
或git clone https://gitee.com/openspug/spug
$ cd /data/spug
$ git checkout x.x.x   # x.x.x 为指定的发行版本,例如:git checkout v2.2.2 #将下载好的前端压缩包解压到指定目录,假设web_x.y.z.tar.gz
$ tar xf web_x.y.z.tar.gz -C /data/spug/spug_web/#创建运行环境
# 安装依赖,如需要使用常规发布功能,则需要安装 git v2.17.0+
$ yum install mariadb-devel python3-devel gcc openldap-devel redis nginx supervisor
# 创建虚拟环境
$ cd /data/spug/spug_api
$ python3 -m venv venv
$ source venv/bin/activate
# 安装python包
$ pip install -U pip -i https://pypi.tuna.tsinghua.edu.cn/simple/
$ pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
$ pip install gunicorn mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple/#修改后端配置;后端默认使用的 Sqlite 数据库,通过修改配置使用 MYSQL 作为后端数据库;
#在 spug_api/spug/ 目录下创建 overrides.py 文件,启动后端服务后会自动覆盖默认的配置,避免直接修改 settings.py 以便于后期获取新版本
$ vi spug_api/spug/overrides.pyDEBUG = FalseDATABASES = {'default': {'ATOMIC_REQUESTS': True,'ENGINE': 'django.db.backends.mysql','NAME': 'spug',             # 替换为自己的数据库名,请预先创建好编码为utf8mb4的数据库'USER': 'spug_user',        # 数据库用户名'PASSWORD': 'spug_passwd',  # 数据库密码'HOST': '127.0.0.1',        # 数据库地址'OPTIONS': {'charset': 'utf8mb4','sql_mode': 'STRICT_TRANS_TABLES',#'unix_socket': '/opt/mysql/mysql.sock' # 如果是本机数据库,且不是默认安装的Mysql,需要指定Mysql的socket文件路径}}
}#初始化数据库
$ cd /data/spug/spug_api
$ python manage.py updatedb#创建默认管理员账户
$ python manage.py user add -u admin -p spug.dev -s -n 管理员  #-s 超级管理员,-n 用户昵称# 创建启动服务脚本
$ vi /etc/supervisord.d/spug.ini[program:spug-api]
command = bash /data/spug/spug_api/tools/start-api.sh
autostart = true
stdout_logfile = /data/spug/spug_api/logs/api.log
redirect_stderr = true[program:spug-ws]
command = bash /data/spug/spug_api/tools/start-ws.sh
autostart = true
stdout_logfile = /data/spug/spug_api/logs/ws.log
redirect_stderr = true[program:spug-worker]
command = bash /data/spug/spug_api/tools/start-worker.sh
autostart = true
stdout_logfile = /data/spug/spug_api/logs/worker.log
redirect_stderr = true[program:spug-monitor]
command = bash /data/spug/spug_api/tools/start-monitor.sh
autostart = true
stdout_logfile = /data/spug/spug_api/logs/monitor.log
redirect_stderr = true[program:spug-scheduler]
command = bash /data/spug/spug_api/tools/start-scheduler.sh
autostart = true
stdout_logfile = /data/spug/spug_api/logs/scheduler.log
redirect_stderr = true#创建前端nginx配置文件;、如果没有在 spug.conf 中指定 server_name 则需要把 /etc/nginx/nginx.conf 中默认的 server 块注释或删除后才能正常访问, 否则会打开 Nginx 默认页面
$ vi /etc/nginx/conf.d/spug.confserver {listen 80;server_name _;     # 修改为自定义的访问域名root /data/spug/spug_web/build/;client_max_body_size 20m;   # 该值会影响文件管理器可上传文件的大小限制,请合理调整gzip  on;gzip_min_length  1k;gzip_buffers     4 16k;gzip_http_version 1.1;gzip_comp_level 7;gzip_types       text/plain text/css text/javascript application/javascript application/json;gzip_vary on;location ^~ /api/ {rewrite ^/api(.*) $1 break;proxy_pass http://127.0.0.1:9001;proxy_read_timeout 180s;proxy_redirect off;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location ^~ /api/ws/ {rewrite ^/api(.*) $1 break;proxy_pass http://127.0.0.1:9002;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location / {try_files $uri /index.html;}
}#启动服务
# 设置开机启动
$ systemctl enable nginx
$ systemctl enable redis
$ systemctl enable supervisord
$ systemctl restart nginx
$ systemctl restart redis  #请确保Redis仅监听在 127.0.0.1
$ systemctl restart supervisord## 默认更新到最新版本
$ cd spug_api
$ source venv/bin/activate
$ python manage.py update
# 重启服务
$ supervisorctl restart all

注意:确保服务端接收到请求 HTTP Header 的 X-Real-IP 为真实的客户端地址,Spug 会使用该 IP 提高安全性(当登用户的 IP 发生变化时 Token 自动失效。

更多参见官网文档介绍。
https://github.com/openspug/spug/issues/38

5)平台功能概览

1>主机管理:可以对主机进行管理、主机也可以通过表格批量导入
在这里插入图片描述
2>批量在线执行:可以执行模版命令和临时命令,例如经常执行的安装、更新、初始化的脚本或者命令就可以保存成模版来方便的快速批量执行。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
3>文件在线上传下载:可以很方便的在执行命令过程中上传或者下载需要的文件
在这里插入图片描述
4>在线终端:在线终端方便平台远程调试,跟本地执行一样
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
5>应用部署:可以快速部署任意开发语言的的应用,例如PHP、Java、Nodejs、Go等
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
6>监控报警:支持常见的网站监控,也可以针对主机的进程、端口进行监控,如果端口、进程监控满足不了需要,可以自己写脚本进行监控,报警支持钉钉、微信、邮件、企业微信、(短信报警下个版本支持)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

:可查询最近30天内的报警记录,超过30天的报警记录会被自动删除,且通道沉默期发送的报警信息不会被记录。另外,监控实例删除后,告警信息不会同步删除;

7>配置管理:(支持KV,txt,json等格式)
在这里插入图片描述
在这里插入图片描述

8>任务计划:
在这里插入图片描述

三、附录:

1)Python中Django和Flask框架的区别

在这里插入图片描述
它们是ython编程语言的世界里,功能最强大、最流行的两个框架。不仅在web后端开发、微服务开发,同时在ERP系统开发、API接口开发等领域,这两个框架也应用非常广泛。

关于两者的区别,网络流行一个生动的比喻就是:Django类似于精装修的房子,自带豪华家具、非常齐全功能强大的家电,什么都有了,拎包入住即可,十分方便。而Flask类似于毛坯房,自己想把房子装修成什么样自己找材料,买家具自己装。材料和家具种类非常丰富,并且都是现成免费的,直接拿过去用即可。

Flask:

小巧、灵活,让程序员自己决定定制哪些功能,非常适用于小型网站。
对于普通的工人来说将毛坯房装修为城市综合体还是很麻烦的,使用Flask来开发大型网站也一样,开发的难度较大,代码架构需要自己设计,开发成本取决于开发者的能力和经验。

如果想搞懂Python web开发WSGI协议原理以及实现过程、或者你想灵活定制组件,完全DIY你的应用、想实现微服务,那么建议你选择Flask。

Django:

大而全,功能极其强大,是Python web框架的先驱,用户多,第三方库极其丰富。

非常适合企业级网站的开发,但是对于小型的微服务来说,总有“杀鸡焉有宰牛刀”的感觉,体量较大,非常臃肿,定制化程度没有Flask高,也没有Flask那么灵活。

如果关注产品的最终交付、想快速开发一个大的应用系统(比如新闻类网站、商城、ERP等),那么建议你选择Django,你想得到的功能它都有,想不到的功能它也有。


http://chatgpt.dhexx.cn/article/7dFChmdE.shtml

相关文章

Django 实现自动化运维后台

layui 框架与BootCSS框架相似都属于前端美化框架,区别在于BootCSS更加专业,而LayUI则更多的是面向于后端开发者,所以在组织形式上毅然采用了几年前的以浏览器为宿主的类 AMD 模块管理方式,却又并非受限于 CommonJS 的那些条条框框…

Linux自动化运维工具ansible详解

文章目录 认识ansibleansible的组成ansible的相关文件ansible的使用ansible的常用模块1、copy模块2、fetch模块3、command模块4、shell 模块5、file模块6、cron模块7、yum模块8、service模块9、script模块 认识ansible ansible是一个自动化运维工具的名称,集合了众…

如何实现网络自动化运维?

众所周知,网络是多个设备之间共享信息的连接。如今,手动管理连接到网络的每个设备会是一项重大的挑战,但是IT管理员可以通过网络自动化软件的功能的帮助来克服这一挑战,从而大大减少工作量和人为错误的可能。 网络编排是一种策略驱…

IT自动化运维平台建设解决方案

u当前IT运维的整体发展趋势是向自动化迭代,并向智能化演化; u目前大部分组织的IT运维正处在从人工运维向自动化运维的发展阶段; u有部分组织已经基本实现了自动化运维,正在向智能化运维升级,而也已有少量企业已经构建了…

Ansible 自动化运维

一、 Ansible:开源的运维自动化工具,可以提高运维工程师的效率,减少人为失误。操作简单,功能丰富。 特点:1)基于python开发,易于二次开发 2)丰富的内置模块,基本可以满足…

运维思索:自动化运维体系如何入手

需求 运维是事件驱动,还是自驱动可能是我们在运维工作中不太关注的问题。事件驱动让运维止步于故障,而自驱动让运维不止于建设。持续性的运维建设就需要一套自动化的运维体系,那么我们应该从何入手? 其实前期《运维思考》一系列…

自动化运维了解

背景 公司的服务器越来越多, 维护一些简单的事情都会变得很繁琐。用shell脚本来管理少量服务器效率还行, 服务器多了之后, shell脚本无法实现高效率运维。这种情况下,我们需要引入**自动化运维**工具, 对多台服务器实现高效运维。 需求 通过管理服务器能够按照需求灵…

做好自动化运维平台必备技能

万丈高楼平地起,高楼稳不稳取决于地基是否扎实。基础数据便是运维管理这座高楼的地基。 首先介绍一下我们在运维管理中所涉及到的基础数据有哪一些。请看下图: 基础数据大致分为CMDB、日志、生产DB、知识库四个模块。 一、基础数据概况 CMDB中文是配置管…

什么是自动化运维,目前的普及状况?

感觉随着近年全球运维大会的火热举办,自动化运维话题逐渐被推向了前所未有地热度,很多人都觉得这是炒作的概念,其实不然,它是随着信息技术发展的必然趋势,下面和大家细聊。 随着IT技术的发展,“大数据”、…

超全!常见自动化运维工具全解析(含ansible、Puppet、SaltStack教程)

在IT行业运维一直是重复性工作较多的重灾区,而通过自动化运维工具不仅可以让工作更加轻松还减少了人为失误。 实现自动化运维就是将复杂的事情简单化、标准化、流程化,通过工具重复性、周期性的实现。例如应用系统维护自动化,巡检自动化和故障…

优质的国外程序员网站

在学习计算机编程相关技术时,必须知道一些有用的网站,以便随时掌握信息,了解技术前沿和学习新技术。下面是整理的一些国外干货网站列表。由于大多在墙外,部分网站可能需要梯子,请自备。下面开始技术之旅吧。 索引 当你…

程序员自学网站推荐

1.CSDN(CSDN - 专业开发者社区) CSDN是国内非常知名的技术交流社区,创建的时间也比较早,所以在国内也很有影响力。并且CSDN还是有非常多很优质的原创文章与资料,对于程序员来讲经常来这边逛逛也会学到不少知识的。 2.Import New(import - J…

给大家推荐几个程序员必备网站

1、程序员导航CXY521: 程序员导航-CXY521http://www.cxy521.com/ 2、程序员盒子 coderutil 程序员盒子,专注于程序员学习编程提效 官网https://www.coderutil.com/ 3、程序员快速导航 程序员快速导航 - 专门为程序员服务的导航网站 (yundashi168.com)http://nav.yundashi1…

程序员平时上哪些网站

转载地址:http://blog.csdn.net/vqhgwjl9eub/article/details/78146795 前言 程序员每天必不可少的就是与电脑打交道,经常逛的一些网站也相对固定,今天小编给大家分享一下自己平时经常逛的一些网站,不管是开发,还是了解…

牛人程序员最爱逛的10大编程网站,你知道几个?

今天我给大家推荐10个高级程序员经常逛的网站,你又去过几个呢?来跟着小编一起看看都有哪些牛逼的网站吧。 分享之前我还是要推荐下我自己的前端学习群:653415492,不管你是小白还是大牛,小编我都挺欢迎,不定…

程序员必备网站,建议收藏!

俗话说的好,一个程序员,20%靠知识储备,80%靠网络搜索。 打开代码,打开Google,开始工作。 那么常用的写码软件,你知道几个呢? 下面我们来一起看一下常用的写码软件吧~ 建议收藏本文&#xff…

程序员必备网站

程序员学习网站: CSDNhttps://link.juejin.cn?targetwww.csdn.net 稀土掘金http://juejin.cn Giteehttps://link.juejin.cn?targetGitee.com Stack overflow中文网https://link.juejin.cn?targetstackoverflow.org.cn W3school在线教程https://link.juejin.cn?targetww…

10大程序员必逛网站,良心推荐,建议收藏!

本部分内容对应视频链接。 很多小伙伴在刚开始学习技术的时候,都会去找一些学习类的网站来提高自己的水平。但现在网络越来越发达,学习类的网站真的是多如牛毛。有的网站真的是非常优秀,可以让你学到不少技术,但同样也有很多网站…

8个不能错过的程序员必备网站,惊艳到我了!!!

程序员是一个需要不断学习的职业,不少朋友每天来逛CSDN、掘金等网站,但一直都抱着“收藏从未停止,学习从未开始”的态度,别骗自己了兄弟。在编程体系中,有很多不错的小工具,可以极大得提升我们的开发效率。…

程序员必备十大网站

窝窝整理了十大程序猿必备网站,涵盖了开源平台、搜索引擎、免费的精品课程,包括让你头疼的BUG、算法等。偷偷告诉你,还有帮你拿到心仪的 offer! 一,海量的资源平台 十大网站榜首 :GitHub — 开发者极其重…