Archery 定位 SQL 审核查询平台

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个Archery 定位 SQL 审核查询平台。

Archery 定位 SQL 审核查询平台

介绍

Archery 是 archer 的分支项目,定位于 SQL 审核查询平台,旨在提升 DBA 的工作效率,支持多数据库的 SQL 上线和查询,同时支持丰富的 MySQL 运维功能,所有功能都兼容手机端操作。

手动部署

安装 Python 和 virtualenv

# 安装依赖
yum install wget gcc make zlib-devel openssl openssl-devel 
wget "https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz" 
tar -xvJf Python-3.6.5.tar.xz 
# 编译
cd Python-3.6.5 
./configure prefix=/usr/local/python3 
make && make install 
ln -fs /usr/local/python3/bin/python3 /usr/bin/python3 
ln -fs /usr/local/python3/bin/pip3 /usr/bin/pip3 
# virtualenv
pip3 install virtualenv -i https://mirrors.ustc.edu.cn/pypi/web/simple/ 
ln -fs /usr/local/python3/bin/virtualenv /usr/bin/virtualenv 

yum 安装

# 安装EPEL源
yum install epel-release 
# 安装python36、pip36
yum install python36 python36-pip
# virtualenv
pip3.6 install virtualenv -i https://mirrors.ustc.edu.cn/pypi/web/simple/ 

安装 Archery

#准备虚拟环境 
#编译安装python的使用
virtualenv venv4archery --python=python3
# yum安装的使用
virtualenv venv4archery --python=python3.6
# 切换python运行环境到虚拟环境
source venv4archery/bin/activate

修改配置

vi archery/settings.py

安全修改

请务必修改配置文件中的 SECRET_KEY 信息,该 key 用于敏感信息加密。

基础配置

# 修改SECRET_KEY
# 关闭debug模式
DEBUG = False
# 设置ALLOWED_HOSTS,建议限制内网访问
ALLOWED_HOSTS = [
    '.example.com',  # Allow domain and subdomains
    '.example.com.',  # Also allow FQDN and subdomains
]
# 请求大小限制,如果提交SQL语句过大可以修改该值
DATA_UPLOAD_MAX_MEMORY_SIZE = 15728640
# 密码校验,用户注册和添加密码校验规则
AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
        'OPTIONS': {
            'min_length': 9, 
        }
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

MySQL 配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'archery', # 数据库名称
        'USER': 'root', # 数据库用户
        'PASSWORD': '', # 数据库密码
        'HOST': '127.0.0.1', # 数据库HOST,如果是docker启动并且关联,可以使用容器名连接
        'PORT': '3306',  # 数据库端口
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", # SQL_MODE,为了兼容select * group by,可以按需调整
            'charset': 'utf8mb4'
        },
        'TEST': {
            'NAME': 'test_archery',
            'CHARSET': 'utf8mb4',
        },
    }
}

启动

runserver 启动(仅作为本地测试)

source /opt/venv4archery/bin/activate
#启动Django-Q,需保持后台运行
python3 manage.py qcluster
#启动服务
python3 manage.py runserver 0.0.0.0:9123  --insecure  

Gunicorn+Nginx 启动

# nginx配置示例  
server{
        listen 9123; # 监听的端口
        server_name archery;
        client_max_body_size 20M; # 处理Request Entity Too Large
        proxy_read_timeout 600s;  # 超时时间与Gunicorn超时时间设置一致,主要用于在线查询

        location / {
          proxy_pass http://127.0.0.1:8000;
          proxy_set_header Host $host:9123; # 解决重定向404的问题,和listen端口保持一致,如果是docker则和宿主机映射端口保持一致
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
        }

        location /static {
          alias /opt/archery/static; # 此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    } 
# 启动  
source /opt/venv4archery/bin/activate
bash startup.sh

使用

添加实例

  • • 实例类型分为主库/从库,支持的数据库类型为MySQL/MsSQL/Redis/PostgreSQL/Oracle/MongoDB/Phoenix,功能支持明细可查看功能清单

  • • 资源组:实例都需要关联资源组,才能被关联资源组的用户访问

  • • 实例标签:通过支持上线、支持查询的标签来控制实例是否在 SQL 上线/查询中显示,要使用上线和查询的实例需要关联标签

  • Archery 定位 SQL 审核查询平台

添加资源组

资源组是一堆资源对象的集合,与用户关联后用来隔离资源访问权限,一般可以按照项目组划分。

Archery 定位 SQL 审核查询平台

资源组关联用户/实例

用户必须关联资源组才能访问资源组内的实例资源 – 关联对象管理可以批量关联实例和用户 – 在添加用户和实例的时候也可以批量关联资源组。

Archery 定位 SQL 审核查询平台

设置工单上线和查询的审批流程

项目提供简单的多级审批流程配置,审批流程和资源组以及审批类型相关,不同资源组和审批类型可以配置不同的审批流程,审批流程配置的是权限组,可避免审批人单点的问题。

Archery 定位 SQL 审核查询平台

-END-

开源地址:https://gitee.com/rtttte/Archery

原文始发于微信公众号(开源技术专栏):Archery 定位 SQL 审核查询平台

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/53675.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!