使用源码部署

2022/3/18

本节将介绍使用源码部署的方法,此使用方法部署的本套系统已经在生产环境跑了一段时间,非常稳定,目前推荐在生产环境使用此方法部署

# 环境准备

我们推荐使用 Linux 来部署本套系统,在系统的选择上,推荐 Fedora 35 x64 ,主要是因为 Fedora 装的 Python 版本比较新,安装 docker 也非常方便,而且我也比较熟悉。

我们推荐的配置如下表,性能需求取决于数据量,每天 11 万条原始数据量的情况下推荐如下,请根据实际情况调整,另外,该方案假设你把所有服务(本项目的前后端)全部放在一台机器上跑

系统 Fedora 35 x64
CPU 推荐 8 核,最低 4 核
RAM 4G
HDD 145G(存储一年)

# 准备数据库和 Nginx 服务器

推荐使用 Docker 部署

# MongoDB

docker run -d -p 27017:27017 --restart=always --name mongodb mongo:4.1.6 --auth
1

设置 root 账户密码(把下面的 123 改成你要设置的密码)

docker exec -it mongodb mongo
use admin
show dbs
db.createUser({user: 'root', pwd: '123', roles: [{role: "root", db: "admin"}]})
1
2
3
4

# Nginx

docker run -d -p 80:80 --restart=always --name nginx -v  /usr/local/nginx:/usr/share/nginx/html nginx
1

# 下载源码

检查你的 Python 版本,需要 >=3.5

python3 -V
1

首先,使用 Git 等方式将后端源码下载下来,我们以 /home/pysyslog 为例

然后,使用 vivim 等修改配置区域的变量

虽然源码这里已经写的非常详细了,不过在这里也提一下,我们以 calcAttack.py 为例来讲解一下

################################ 基础设定 ################################
## 调试模式 True = ON; False = OFF
debug = False

## MongoDB 数据库设定
MongoDB_host = "127.0.0.1" # 数据库IP 形如:"127.0.0.1"
MongoDB_port = int(27017) # 数据库端口 形如:"int(12345)"
MongoDB_user = "root" # 数据库用户 形如:"user",请使用 root 账户,否则可能产生意外的问题
MongoDB_password = "password" # 数据库密码 形如:"password"
### 要读写的数据库名称和 collection
# 读出
MongoDB_From_dbName = "orgData" # 数据库名称 默认:"orgData"
MongoDB_From_col = "syslog" # collection 名称 默认:"syslog"
# 写入
MongoDB_to_dbName = "show" # 数据库名称 默认:"show"
MongoDB_to_col = "bigScreen" # collection 名称 默认:"bigScreen"

## 输出文件
outputCsvName = '攻击IP.csv' # 默认:'攻击IP.csv'

## mmdb 文件位置,可写相对位置,如使用 Cron 定时运行请写绝对位置
mmdbLocation = '/home/pysyslog/GeoLite2-City.mmdb'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

如上所示,后端每个文件都在最开始提供了配置区域,如果需要修改配置,修改这里的内容就 OK 啦

几点注意事项:

  1. 测试的时候推荐打开调试模式看是否能收到数据
  2. MongoDB_host 这里请 一定 填写机器的 IP 地址而不是 127.0.0.1 ,否则可能会导致奇奇怪怪的问题发生
  3. mmdb 文件位置最好写绝对位置
  4. 可以用 docker logs -f monogdb 看数据是否写入

然后,你需要把前端的代码复制到上面映射 Nginx 工作文件夹的目录

# 配置定时任务

后端组件中各组件应当按照如下规则运行(可视实际情况调整)

组件名称 定时运行要求
sysloger.py 开机运行
apiv1.py 开机运行
calcAttack.py 每5分钟运行一次
backupOrgData.py 每天定时运行一次且在 mailAlert.py 组件运行后
mailAlert.py 每天定时运行一次且在 backupOrgData.py 组件运行前
deleteOldData.py 每天运行一次

定时运行功能使用 crontab 实现,在 Fedora 下,这个包需要安装,而在 Ubuntu 和 CentOS 下,这个包通常不需要安装

# Fedora 安装 crontab
dnf install -y cronie 
1
2

安装后请使用 systemctl 设置 crontab 开机启动

systemctl enable crond && systemctl start crond
1

定时任务设置,如果看不懂请学习 cron 规则

crontab -e
# 粘贴以下内容并用 :wq 保存
@reboot nohup python3 /home/pysyslog/sysloger.py > /dev/null 2>&1 &
@reboot nohup python3 /home/pysyslog/apiv1.py > /dev/null 2>&1 &
*/5 * * * * nohup python3 /home/pysyslog/calcAttack.py > /dev/null 2>&1 &
4 8 * * * nohup python3 /home/pysyslog/backupOrgData.py > /dev/null 2>&1 &
* 4 * * * nohup python3 /home/pysyslog/deleteOldData.py > /dev/null 2>&1 &
3 8 * * * nohup python3 /home/pysyslog/mailAlert.py > /dev/null 2>&1 &
1
2
3
4
5
6
7
8

之后,重启并验证是否配置完成

到此,恭喜你已经成功部署本套系统!