数据库配置
EasyFly-Ads 使用 MySQL 作为主数据库,Redis 作为缓存和会话存储。本章指导安装、配置及初始化。
MySQL 安装
使用 Docker(推荐)
bash
docker run -d \
--name easyfly-mysql \
--restart always \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=your_root_password \
-v /data/mysql:/var/lib/mysql \
mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--default-authentication-plugin=mysql_native_password使用包管理器
CentOS:
bash
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo yum install -y mysql-community-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
# 获取临时密码
sudo grep 'temporary password' /var/log/mysqld.logUbuntu:
bash
sudo apt install -y mysql-server
sudo systemctl start mysql
sudo systemctl enable mysqlMySQL 初始化
安全配置
bash
mysql_secure_installation按提示进行:
- 设置 root 密码
- 移除匿名用户
- 禁止 root 远程登录
- 删除 test 数据库
- 重新加载权限表
创建数据库与用户
sql
-- 登录 MySQL
mysql -u root -p
-- 创建数据库
CREATE DATABASE easyfly CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户并授权
CREATE USER 'easyfly'@'%' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON easyfly.* TO 'easyfly'@'%';
FLUSH PRIVILEGES;导入初始化脚本
bash
mysql -u easyfly -p easyfly < /path/to/init.sql数据库结构概览
| 表名 | 说明 |
|---|---|
ef_users | 用户基础信息 |
ef_user_relations | 用户邀请关系链 |
ef_agents | 代理商信息 |
ef_ad_slots | 广告位配置 |
ef_ad_reports | 广告数据上报 |
ef_wallets | 用户金币/余额 |
ef_withdrawals | 提现记录 |
ef_transactions | 资金流水 |
ef_risk_logs | 风控日志 |
ef_system_config | 系统配置项 |
Redis 安装
使用 Docker
bash
docker run -d \
--name easyfly-redis \
--restart always \
-p 6379:6379 \
-v /data/redis:/data \
redis:7 \
redis-server --requirepass your_redis_password --appendonly yes使用包管理器
bash
# CentOS
sudo yum install -y redis
sudo systemctl start redis
sudo systemctl enable redis
# Ubuntu
sudo apt install -y redis-server
sudo systemctl start redis-server
sudo systemctl enable redis-serverRedis 安全配置
编辑 /etc/redis/redis.conf:
ini
# 设置密码
requirepass your_redis_password
# 绑定内网IP(禁止公网访问)
bind 127.0.0.1 10.0.0.1
# 关闭危险命令
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command KEYS ""bash
sudo systemctl restart redis连接配置
在 EasyFly-Ads 配置文件中设置数据库连接:
yaml
# MySQL
database:
host: 127.0.0.1
port: 3306
name: easyfly
username: easyfly
password: your_secure_password
charset: utf8mb4
max_connections: 100
# Redis
redis:
host: 127.0.0.1
port: 6379
password: your_redis_password
db: 0
pool_size: 20备份策略
MySQL 定时备份
创建备份脚本 /opt/scripts/mysql_backup.sh:
bash
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=/data/backup/mysql
mkdir -p $BACKUP_DIR
mysqldump -u easyfly -p'password' easyfly | gzip > $BACKUP_DIR/easyfly_$DATE.sql.gz
# 保留最近 7 天的备份
find $BACKUP_DIR -name "easyfly_*.sql.gz" -mtime +7 -delete添加 crontab 定时任务:
bash
0 2 * * * /bin/bash /opt/scripts/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1Redis 备份
Redis 使用 AOF + RDB 双重持久化,数据文件位于 /data/redis/。建议定期将该目录备份至对象存储。