Archery部署教程-手动

原创
03/02 11:21
阅读数 112

【Part1:安装】
环境信息

1、os:CentOS Linux release 7.8.2003 (Core)
2、python:Python 3.6.5
3、redis:Redis server v=5.0.11
https://my.oschina.net/guiguketang/blog/3043486
4、mysql:mysql  Ver 14.14 Distrib 5.7.33
https://my.oschina.net/guiguketang/blog/4966611

1、安装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 

2、准备虚拟环境

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

3、下载最新release包,安装依赖库

wget "https://github.com/hhyo/archery/archive/v1.8.0.tar.gz"
tar -xzvf v1.8.0.tar.gz

# 安装系统依赖
yum -y install gcc gcc-c++ python-devel mysql-devel openldap-devel unixODBC-devel gettext

# 安装依赖库
cd archery-1.8.0
pip3 install -r requirements.txt -i https://mirrors.ustc.edu.cn/pypi/web/simple/ 

# 如果使用yum安装的python3,安装mysqlclient可能提示提示缺少Python.h,可安装
yum -y install python36-devel

4、准备MySQL、Redis实例

  • MySQL推荐版本>=5.6
    手动创建db,dbname为archery
  • Redis提供任务队列和缓存

5、MySQL配置

建议MySQL版本5.6以上

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',
        },
    }
}

6、缓存配置

缓存使用redis,可参考 django_redis 文档 http://django-redis-chs.readthedocs.io/zh_CN/latest/

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/0", # redis://host:port/db
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PASSWORD": ""

        }
    }
}

7、启动准备

# 数据库初始化
python3 manage.py makemigrations sql
python3 manage.py migrate 

# 数据初始化
python3 manage.py dbshell<sql/fixtures/auth_group.sql
python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql

# 创建管理用户
python3 manage.py createsuperuser

8、archery手动启动服务
runserver启动(仅作为本地测试
source /opt/venv4archery/bin/activate
#启动Django-Q,需保持后台运行
python3 manage.py qcluster &
#启动服务
python3 manage.py runserver 0.0.0.0:9123  --insecure  &

访问地址:
http://ip:9123
如果启动成功,但无法访问,看一下防火墙是不是处于开启状态。
以上就是手动安装archery的quanguoc

生产环境启动-使用守护进程方式启动
source /opt/venv4archery/bin/activate
bash startup.sh
本质使用的是:Gunicorn+Nginx启动

nginx配置

upstream archery_cdeledu {
        server 127.0.0.1:8000;
}
server {
        listen       80;
        server_name  archery1.***.com 192.168.213.136;
        charset utf-8;
        access_log  logs/archery.cdel.com.access.log  main;
        client_max_body_size 20M; # 处理Request Entity Too Large
        proxy_read_timeout 600s;  # 超时时间与Gunicorn超时时间设置一致,主要用于在线查询
        
        location / {
                proxy_pass              http://archery_cdeledu;
                proxy_buffer_size 64k;  
                proxy_buffers 4 64k;
                proxy_redirect    off;
                proxy_set_header Host $host:80; # 解决重定向404的问题,和listen端口保持一致,如果是docker则和宿主机映射端口保持一致
                proxy_set_header  X-Real-IP  $remote_addr;
                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
                root /web/project/dbm;
                index index.shtml index.html index.htm;
        }       
        location /static {
          alias /usr/local/src/archery/Archery-1.8.0/static; # 此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源
        } 
        
        error_page  404              /404.htm;
        
        # redirect server error pages to the static page /50x.html
        # 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }   
} 



Part2插件安装
1、goInception
#wget https://github.com/hanchuanchuan/goInception/archive/refs/tags/v1.2.4.tar.gz
# tar -zxvf goInception-linux-v1.2.4-27-ga6c0cfa.tar.gz 
# cp config/config.toml.default config/config.toml
# nohup ./goInception -config /usr/local/src/goInception/config/config.toml &





Part3:管理系统配置
此插件如果配置不成功,则无法提交上线SQL
1、SQL审计插件goinception配置参考-语法检测
step1:安装
wget 
https://github.com/hanchuanchuan/goInception/archive/refs/tags/v1.2.4.tar.gz
tar -zxvf goInception-linux-v1.2.4-27-ga6c0cfa.tar.gz
step2:修改配置文件
cp config/config.toml.default config/config.toml
配置文件要修改和自己环境相一致的配置,否则不能生效

[inc]
backup_host = "127.0.0.1"
backup_port = 3306
backup_user = "root"
backup_password = "123456..."

step3:启动
./goInception -config /usr/local/src/goInception/config/config.toml &


2、inception

【Part4开机自启动脚本】

-----测试环境------

/usr/local/src/redis/redis-5.0.11/src/redis-server &
service mysqld start
cd /usr/local/src/archery
source venv4archery/bin/activate
cd Archery-1.8.0
python3 manage.py qcluster &
python3 manage.py runserver 0.0.0.0:9123  --insecure  &

-------生产环境-----------

/usr/local/src/redis/redis-5.0.11/src/redis-server &
service mysqld start
cd /usr/local/src/archery
source venv4archery/bin/activate
cd Archery-1.8.0
sh startup.sh

【Part5异常信息】
异常一、数据库初始化异常

手动配置的话,需要自己创建数据库
执行python3 manage.py migrate
出现数据库初始化异常
原因是数据库编码的问题,创建库的时候设置编码即可
mysql> show global variables like '%character%';
mysql> drop database archery;
mysql> create database archery default character set utf8;

异常二、ModuleNotFoundError: No module named 'Crypto'
解决:
pip3 uninstall crypto
pip3 uninstall pycrypto
pip3 install pycrypto

官网:
https://github.com/hhyo/archery

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部