spug简介

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

官网地址:https://www.spug.dev

使用文档:https://www.spug.dev/docs/about-spug/

更新日志:https://www.spug.dev/docs/change-log/

常见问题:https://www.spug.dev/docs/faq/

特性

批量执行: 主机命令在线批量执行

在线终端: 主机支持浏览器在线终端登录

文件管理: 主机文件在线上传下载

任务计划: 灵活的在线任务计划

发布部署: 支持自定义发布部署流程

配置中心: 支持KV、文本、json等格式的配置

监控中心: 支持站点、端口、进程、自定义等监控

报警中心: 支持短信、邮件、钉钉、微信等报警方式

优雅美观: 基于 Ant Design 的UI界面

开源免费: 前后端代码完全开源

环境

Python 3.6+

Django 2.2

Node 12.14

React 16.11

一、安装

以下安装步骤是基于Centos7.x操作系统。

1.安装docker

docker安装方法请参考:https://docs.docker.com/engine/install/centos/

2.拉取官网镜像

$ docker pull registry.aliyuncs.com/openspug/spug

3.启动容器

Docker镜像内部使用的mysql数据库。

如果需要持久化存储代码和数据,可以添加:-v 映射容器内/data路径

$ docker run -d --restart=always --name=spug -p 80:80 registry.aliyuncs.com/openspug/spug

持久化存储启动命令:
mydata指的是本地磁盘路径,也可以是其他目录,但需要保证映射的本地磁盘路径已经存在,/data是容器内代码和数据初始化存储的路径

$ docker run -d --restart=always --name=spug -p 80:80 -v /mydata/:/data registry.aliyuncs.com/openspug/spug

4.初始化

以下操作会创建一个用户名为 admin 密码为 spug.dev 的管理员账户,可自行替换管理员账户。

$ docker exec spug init_spug admin spug.dev

执行完毕后需要重启容器

$ docker restart spug

注:初始化必须出现返回值才算成功,否则不能登录

Running migrations:
  Applying account.0001_initial... OK
  Applying alarm.0001_initial... OK
  Applying config.0001_initial... OK
  Applying app.0001_initial... OK
  Applying deploy.0001_initial... OK
  Applying exec.0001_initial... OK
  Applying host.0001_initial... OK
  Applying monitor.0001_initial... OK
  Applying notify.0001_initial... OK
  Applying schedule.0001_initial... OK
  Applying setting.0001_initial... OK

5.访问测试

在浏览器中输入http://localhost:80访问。(这里的loaclhost就是你本地IP)

用户名:admin  
密码:spug.dev

在这里插入图片描述

二、安装部署常见问题

1.执行数据初始化命令 python manage.py initdb 报错
一般有以下两种情况
Django 版本使用了 3.x 的版本,我们仅支持 2.2.x 版本,安装依赖推荐使用文档中的 pip install -r requirements.txt 来安装
系统的 Sqlite 版本太低,Django 2.2 Sqlite 的版本最低要求为 3.8.3

2.Nginx 访问前端文件提示无权限问题
确认系统是否开启了 selinux。如果开启可通过执行 setenforce 0 来临时关闭后重试。

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

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

5.登录报错Exception:Error 61 connecting to127.0.0.1:6379.
Connection refused.
需要安装 Redis,如果安装的 Redis 不是监听在 127.0.0.1 需要修改配置文件 spug_api/spug/settings.py 指定 Redis 的 Host,配置中的 CACHES 和 CHANNEL_LAYERS 均使用了 Redis。

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

7.如何配置使用带密码的 Redis 服务?
假设 Redis 密码为 foo123,则需要更改以配置文件 spug_api/spug/settings.py 或者 overrides.py 如下内容

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

$ vi spug_api/spug/settings.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"],
        },
    },
}
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐