关于Spug
Spug
面向中小型企业设计的轻量级无Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。
特性
- 批量执行: 主机命令在线批量执行
- 在线终端: 主机支持浏览器在线终端登录
- 任务计划: 灵活的在线任务计划
- 发布部署: 支持自定义发布部署流程
- 配置中心: 支持KV、文本、json等格式的配置
- 监控中心: 支持站点、端口、进程、自定义等监控
- 报警中心: 支持短信、邮件、钉钉、微信等报警方式
- 优雅美观: 基于 Ant Design 的UI界面
- 开源免费: 前后端代码完全开源
———————————————————————————–
docker部署
操作系统
一键安装脚本在Centos7/8和Ubuntu 18.04验证通过,其他版本暂未验证。
安装命令
$ curl https://spug.dev/installer/spug-installer | bash
默认设置
# 默认代码安装路径:
/data/spug
# 默认创建的数据库账号
用户:spug
密码:spug.dev
# 默认创建的系统管理员
账户:admin
密码:spug.dev
安全建议
- 默认安装的
Redis
服务监听在127.0.0.1
但未设置密码,如需启用密码认证,配置使用带密码的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"], }, }, }
- 默认安装了
Mariadb
作为数据存储服务,监听在127.0.0.1
创建了用户名为spug
密码为spug.dev
的用户,安全起见请自行更改该密码,并修改/data/spug/spug_api/spug/overrides.py
使用新密码。 - 确保服务端接收到请求
HTTP Header
的X-Real-IP
为真实的客户端地址,Spug
会使用该IP提高安全性(当登用户的IP发生变化时Token自动失效)。
———————————————————————————–
手动安装
准备环境
- Python 3.6及以上
- Mysql 5.5及以上
安装步骤
以下安装步骤假设项目部署在一台 Centos7
系统的 /data/spug
目录下。
1. Clone项目代码
$ git clone https://github.com/openspug/spug /data/spug $ cd /data/spug $ git checkout x.x.x # x.x.x 为指定的发行版本,例如 git checkout v2.2.2
2. 下载 已编译打包后的前端项目
将下载好的前端压缩包解压到指定目录,x.x.x
是的你下载好的压缩包版本
$ tar xf spug_web_x.x.x.tar.gz -C /data/spug/spug_web/;
3. 创建运行环境
# 安装依赖 $ 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 -r requirements.txt -i https://pypi.doubanio.com/simple/ $ pip install gunicorn mysqlclient -i https://pypi.doubanio.com/simple/
4. 修改后端配置
后端默认使用的 Sqlite
数据库,通过修改配置使用 MYSQL
作为后端数据库,如何使用SqlServer数据库?
在
spug_api/spug/
目录下创建overrides.py
文件,启动后端服务后会自动覆盖默认的配置,避免直接修改settings.py
以便于后期获取新版本。
$ vi spug_api/spug/overrides.py DEBUG = False ALLOWED_HOSTS = ['127.0.0.1'] DATABASES = { '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文件路径 } } }
5. 初始化数据库
$ cd /data/spug/spug_api $ python manage.py initdb
6. 创建默认管理员账户
$ python manage.py useradd -u admin -p spug.dev -s -n 管理员 # -u 用户名 # -p 密码 # -s 超级管理员 # -n 用户昵称
7. 创建启动服务脚本
$ 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
8. 创建前端nginx配置文件
$ vi /etc/nginx/conf.d/spug.conf server { listen 80; server_name _; # 修改为自定义的访问域名 root /data/spug/spug_web/build/; location ^~ /api/ { rewrite ^/api(.*) $1 break; proxy_pass http://127.0.0.1:9001; proxy_redirect off;proxy_set_header X-Real-IP $remote_addr; } 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-Real-IP $remote_addr; } error_page 404 /index.html; }
注意:如果你没有在
spug.conf
中指定server_name
则需要把/etc/nginx/nginx.conf
中默认的server
块注释或删除后才能正常访问, 否则会打开 Nginx 默认页面。
9. 启动服务
# 设置开机启动 $ systemctl enable nginx $ systemctl enable redis $ systemctl enable supervisord # 启动服务 $ systemctl restart nginx $ systemctl restart redis $ systemctl restart supervisord
10. 访问测试
通过浏览器访问测试。