1、安裝docker
#檢查之前有沒有安裝過舊版本docker
yum list installed | grep docker
#如果有舊版本就卸載
yum -y remove 包名
#安裝yum管理工具
yum install -y yum-utils device-mapper-persistent-data lvm2
#添加docker的yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#安裝docker-ce
yum install docker-ce -y
#啟動docker服務(wù),加入開機自啟,查看版本
systemctl start docker
systemctl enable docker
docker version
2、安裝docker-compose
curl -L "https://github.com/docker/compose/releases/download/"指定版本"/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
3、安裝archery
docker pull registry.cn-hangzhou.aliyuncs.com/lihuanhuan/archery
4、下載Archery包
#安裝git
yum -y install git
#下載Archery
git clone https://github.com/hhyo/Archery.git
5、修改配置
docker-compose.yml文件內(nèi)的services可按照本身的運行環(huán)境來調(diào)整,同時注意檢查版本號是否正確,比如說外部已經(jīng)裝好了mysql、redis、inception,就可以將對應(yīng)的services刪除, 但是需要注意修改settings.py文件的相關(guān)配置 根據(jù)網(wǎng)站中的說明,修改mysql,redis,inception 的配置,也可以不修改,直接運行配置,會自動運行對應(yīng)的鏡像
5.1、修改docker-compose.yml
version: '3'
services:
redis:
image: redis:5
container_name: redis
restart: always
command: redis-server --requirepass 123456 #密碼
expose:
- "6379" #端口
mysql:
image: mysql:5.7
container_name: mysql
restart: always
ports:
- "3306:3306"
volumes:
- "./mysql/my.cnf:/etc/mysql/my.cnf"
- "./mysql/datadir:/var/lib/mysql"
environment:
MYSQL_DATABASE: archery
MYSQL_ROOT_PASSWORD: 123456 #root密碼
inception:
image: hhyo/inception
container_name: inception
restart: always
expose:
- "6669"
volumes:
- "./inception/inc.cnf:/etc/inc.cnf"
goinception:
image: hanchuanchuan/goinception
container_name: goinception
restart: always
ports:
- "4000:4000"
volumes:
- "./inception/config.toml:/etc/config.toml"
archery:
image: hhyo/archery:v1.8.2
container_name: archery
restart: always
ports:
- "9123:9123" #端口
volumes:
- "./archery/settings.py:/opt/archery/archery/settings.py"
- "./archery/soar.yaml:/etc/soar.yaml"
- "./archery/docs.md:/opt/archery/docs/docs.md"
- "./archery/downloads:/opt/archery/downloads"
- "./archery/sql/migrations:/opt/archery/sql/migrations"
- "./archery/logs:/opt/archery/logs"
entrypoint: "dockerize -wait tcp://mysql:3306 -wait tcp://redis:6379 -timeout 60s /opt/archery/src/docker/startup.sh" #若是本地需要修改ip
environment:
NGINX_PORT: 9123
5.2、 修改archery/settings.py
# 該項目本身的mysql數(shù)據(jù)庫地址
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'archery', #數(shù)據(jù)庫
'USER': 'root', #用戶
'PASSWORD': 'P@ssw0rd_njxg', #密碼
'HOST': 'mysql', #數(shù)據(jù)庫ip
'PORT': '3306', #端口
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
'charset': 'utf8mb4'
},
'TEST': {
'NAME': 'test_archery',
'CHARSET': 'utf8mb4',
},
}
}
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://redis:6379/0", #redis地址
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": "123456" #redis密碼
}
},
"dingding": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://redis:6379/1", #redis地址
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": "123456" #redis密碼
}
}
}
6、啟動
docker-compose -f docker-compose.yml up -d
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8abc468500bd mysql:5.7 "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
b9ffa8710c65 hanchuanchuan/goinception "/usr/local/bin/dumb…" 2 hours ago Up 2 hours 4000/tcp goinception
5ebbaa722433 redis:5 "docker-entrypoint.s…" 2 hours ago Up 2 hours 6379/tcp redis
718e83ed00e6 hhyo/archery:1.7.12 "dockerize -wait tcp…" 2 hours ago Up 2 hours 0.0.0.0:9123->9123/tcp archery
c77fb994581b hhyo/inception "/bin/sh -c 'nohup /…" 2 hours ago Up 2 hours 6669/tcp inception
7、表結(jié)構(gòu)和數(shù)據(jù)初始化
docker exec -ti archery /bin/bash
source /opt/venv4archery/bin/activate
#表結(jié)構(gòu)初始化
python3 manage.py makemigrations sql
python3 manage.py migrate
#數(shù)據(jù)初始化
python3 manage.py dbshell<sql/fixtures/auth_group.sql
python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql
8、重啟容器(在容器外執(zhí)行)
docker restart archery
9、日志和問題排查
#路徑logs/archery.log
docker logs archery -f --tail=50
10、訪問
http://ip:port
11、修改archery端口
11.1、修改docker-compose.yml
#修改配置文件
archery:
image: hhyo/archery:v1.8.2
container_name: archery
restart: always
ports:
- "9123:9123" #端口
volumes:
- "./archery/settings.py:/opt/archery/archery/settings.py"
- "./archery/soar.yaml:/etc/soar.yaml"
- "./archery/docs.md:/opt/archery/docs/docs.md"
- "./archery/downloads:/opt/archery/downloads"
- "./archery/sql/migrations:/opt/archery/sql/migrations"
- "./archery/logs:/opt/archery/logs"
entrypoint: "dockerize -wait tcp://mysql:3306 -wait tcp://redis:6379 -timeout 60s /opt/archery/src/docker/startup.sh" #若是本地需要修改ip
environment:
NGINX_PORT: 9123
#執(zhí)行命令
docker-compose -f docker-compose.yml up -d
11.2、進(jìn)入archery容器修改nginx配置文件
docker exec -ti archery /bin/bash
#配置文件位置
/etc/nginx/nginx.conf
/opt/archery/src/docker/nginx.conf
server{
listen 9123; # 監(jiān)聽的端口(改為你需要的端口)
server_name archery;
client_max_body_size 20M; # 處理Request Entity Too Large
proxy_read_timeout 600s; # 超時時間與Gunicorn超時時間設(shè)置一致,主要用于在線查詢
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;
}
11.3修改容器端口
#查看容器CONTAINER ID
docker ps
#停止容器
docker stop CONTAINER ID
#停止docker服務(wù)
systemctl stop docker
#修改配置文件,端口全部修改掉
cd /var/lib/docker/containers/CONTAINER ID*
vi hostconfig.json
vi config.v2.json
#退出容器,重啟
systemctl start docker
docker start CONTAINER ID
12、 redis并以配置文件方式啟動
12.1、創(chuàng)建文件夾,從網(wǎng)上拉取conf配置文件放入文件夾內(nèi)
redis 6.0.6 下載 -- Redis中國用戶組(CRUG)(redis官網(wǎng))
# 注釋符號 #
# 1. 注釋 bind 127.0.0.1
# 2. protected-mode yes 修改成 protected-mode no
# 3. 添加 requirepass yourpassword (注:不添加則可以無密碼訪問)
# 注:步驟1和步驟的2目的是為了遠(yuǎn)程連接redis,如果只需本地訪問就無需修改。
# bind 127.0.0.1
protected-mode no
12.2、啟動
docker run -p 6379:6379 --name redis -v /var/lib/redis.conf:/etc/redis/redis.conf -v /var/lib/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
配置解釋:
-p 6379:6379: 第一個端口是宿主機端口(服務(wù)器端口),第二個端口是容器端口(容器是一個個沙箱外部不不能訪問的),將容器的6379端口映射到宿主機的6379端口上,這樣可以通過訪問宿主機6379來訪問redis;
–name iredis: 容器的名字 iredis 方便以后操作容器(docker start iredis ;docker stop iredis 等等);
-v /home/docker/redis/config/redis.conf:/etc/redis/redis.conf: 掛載持久化配置 /home/docker/redis/config/redis.conf :是宿主機(服務(wù)器)你自己的redis.conf文件路徑 /etc/redis/redis.conf : 容器內(nèi)部的redis.conf文件路徑,不用手動創(chuàng)建,容器啟動時會把上邊宿主機的redis.conf自動映射到改目錄下. 這樣在修改redis.conf文件時候就不用進(jìn)入到容器內(nèi)部去修改了
-v /home/docker/redis/data:/data: 掛載持久化文件 /home/docker/redis/data是宿主機中持久化文件的位置,/data是容器中持久化文件的位置文章來源:http://www.zghlxwxcb.cn/news/detail-791623.html
-d : 后臺啟動文章來源地址http://www.zghlxwxcb.cn/news/detail-791623.html
到了這里,關(guān)于安裝Archery開源SQL審計平臺的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!