ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spug软件使用说明书

2022-03-28 11:35:25  阅读:441  来源: 互联网

标签:容器 api Spug 说明书 proxy spug 软件 docker 密钥


关于Spug

介绍

Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。

特性

  • 批量执行: 主机命令在线批量执行
  • 在线终端: 主机支持浏览器在线终端登录
  • 文件管理: 主机文件在线上传下载
  • 任务计划: 灵活的在线任务计划
  • 发布部署: 支持自定义发布部署流程
  • 配置中心: 支持 KV、文本、json 等格式的配置
  • 监控中心: 支持站点、端口、进程、自定义等监控
  • 报警中心: 支持短信、邮件、钉钉、微信等报警方式
  • 优雅美观: 基于 Ant Design 的 UI 界面

预览

image

快速开始

Docker安装

依赖环境

  • Docker
  • 现代浏览器

安装步骤

以下安装步骤使用CentOS7.x操作系统

  1. 安装docker

注意
如已安装 docker 则忽略。
以下安装 docker 步骤适用于 Centos,其他系统安装请参考 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
  1. 拉去镜像
docker pull registry.aliyuncs.com/openspug/spug
  1. 启动容器
如果需要持久化存储代码和数据,可以添加:-v 映射容器内/data路径。

镜像内置了 Mysql 数据库。
根据需要,以下两种启动方式任选其一即可。

# 持久化存储启动命令:
# /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
  1. 初始化
    以下操作会创建一个用户名为 admin 密码为 spug.dev 的管理员账户,可自行替换管理员账户。

如果提示连接数据失败,再次执行尝试就可以了。

docker exec spug init_spug admin spug.dev
  1. 访问测试
    在浏览器中输入 http://localhost:80 访问。
用户名: admin  
密码: spug.dev

安装相关问题

执行数据初始化命令 python manage.py updatedb 报错

一般有以下两种情况

  • Django 版本使用了 3.x 的版本,我们仅支持 2.2.x 版本,安装依赖推荐使用文档中的 pip install -r requirements.txt 来安装。
  • 系统的 Sqlite 版本太低,Django 2.2 Sqlite 的版本最低要求为 3.8.3。

Nginx 访问前端文件提示无权限问题

确认系统是否开启了 selinux。如果开启可通过执行 setenforce 0 来临时关闭后重试。

登录报错 请求失败: 504 Gateway Timeout

请确保 api 服务是否启动,如果已启动则可以通过控制台查看是否监听在 8000 端口,如果不是 8000 端口可以改为 8000 端口或者修改前端项目的 spug/spug_web/src/setupProxy.js 文件中的 target 值为你的 api 服务的监听地址和端口。

登录报错 请求失败: 502 Bad Gateway

请确保 api 服务已正常启动且 nginx 配置正确。另可查看 nginx 日志如有发现 13: Permission denied 字样的报错则可尝试关闭 selinux 后再测试。

登录报错 Exception: Error 61 connecting to 127.0.0.1:6379. Connection refused.

需要安装 Redis,如果安装的 Redis 不是监听在 127.0.0.1 需要修改配置文件 spug_api/spug/settings.py 指定 Redis 的 Host,配置中的 CACHES 和 CHANNEL_LAYERS 均使用了 Redis。

添加主机报错 Exception: not a vaild RSA private key file

当 Spug 生成的密钥对无法通过验证时,会尝试读取系统的 ~/.ssh/ 目录下的密钥进行验证,这个报错一般是在读取系统密钥时出错。 可以尝试先移除系统 的密钥,然后再操作添加主机,等添加完成后再恢复原有的密钥。

如何配置使用带密码的 Redis 服务?

假设 Redis 密码为 foo123,则需要更改以配置文件 spug_api/spug/overrides.py(推荐) 或者 settings.py(影响后续版本升级) 如下内容,修改完成后记得重启服务。

提示
自定义的配置可以在 spug_api/spug/ 目录下创建 overrides.py 文件来覆盖默认的配置。

vi spug_api/spug/overrides.py
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://:foo123@127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": ["redis://:foo123@127.0.0.1:6379/0"],
        },
    },
}

Docker 部署使用外部 Mysql

官方 Docker 镜像内置了数据库服务,如果你想使用自己的外部数据库,可以通过如下方法:

注意
如果需要迁移数据,请查看 版本升级注意事项,以免造成后期无法升级新版本。

# 1. 进入容器
docker exec -it spug bash

# 2. 修改配置文件使访问外部数据库
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',
        }
    }
}

# 3. 停止容器内的数据库服务
vi /etc/supervisord.d/spug.ini

# 找到如下行并删除
[program:mariadb]
command = /usr/libexec/mysqld --user=mysql
autostart = true

# 4. 退出并重启容器
exit
docker restart spug

使用常见问题

使用 nohup 启动后台进程页面一直在转圈不会结束?

在 批量执行 或 发布配置 等的执行脚本中以 nohup 或 & 的方式启动后台子进程时需要 把命令的标准输出重定向至 /dev/null,例如以下启动 Tomcat 的命令:

cd web/WEB-INF/
nohup ./startup.sh &

把上述命令改为:

cd web/WEB-INF/
nohup ./startup.sh > /dev/null &

能否使用自己的密钥对?

可以,v2.3.0 版本开始已支持上传自定义密钥对,可以在 系统管理 \ 系统设置 \ 密钥设置 中,自行上传密钥。

新建常规发布申请 git clone 错误

Spug 无法提供交互式的输入账户密码登录git仓库的能力,如果是公开的仓库 http/https/ssh 任何一种协议都可以,但如果是私有仓库推荐使用 ssh 协议配置密钥来访问。http/https 协议则需要在带上用户名和密码,例如 https://yourname:password@gitee.com/openspug/spug.git 如果账户名中包含了 @ 符号,则需要替换成 %40。特别要注意的是,如果你是通过docker方式部署的则需要确保在容器内可以访问仓库,而不是在宿主机上。

主机 Console 或执行发布页面无内容

这种情况大部分都是 Websocket 连接建立失败了,一般出现在部署时自己加了一层 nginx 之类的代理工具,这些代理工具默认无法处理 Weboscket 请求, 这就需要你配置其支持转发 Websocket 请求,下边给个 Nginx 的例子,这里假设你用 docker 部署的 Spug, 映射了宿主机的 8000 端口:

server {
  listen 80;
  server_name xxx.xxx.xxx;
  
  location / {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
 
  location ^~ /api/ws/ {
    proxy_pass http://127.0.0.1:8000;
    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;
  }

  error_page 404 /index.html;
}

文件管理器上传文件报错 413 Request Entity Too Large

文件上传大小受 Nginx 的 client_max_body_size 影响,请修该值至合适的大小,参考以下配置:

注意
docker 方式部署配置文件位于容器内的 /etc/nginx/nginx.conf, 可以在容器外部编辑后通过 docker cp 至容器内,也可以在容器内执行 vi 在容器内直接修改,最后别忘了重启容器。

server {
  listen 80;
  server_name xxx.xxx.xxx;
  client_max_body_size 100m;

  ...
}

钉钉收不到通知?

钉钉机器人安全设置中 IP地址 添加部署 Spug 的服务器的公网地址,或者使用 自定义关键词 填写 通知,如下图
image

二开相关问题

FAQ

使用手册

主机管理

批量执行

应用发布

应用管理

发布培训

发布申请

回滚机制

配置中心

环境管理

服务管理

应用管理

配置管理

API

任务调动

监控中心

报警中心

报警记录

报警联系人

报警联系组

系统管理

账户管理

系统设置

微信Token

发布模板

Java项目配置

Node项目配置

进阶指南

手动部署

二次开发

实践指南

标签:容器,api,Spug,说明书,proxy,spug,软件,docker,密钥
来源: https://www.cnblogs.com/minseo/p/16066227.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有