7.3 KiB
7.3 KiB
订单日报系统 数据库变更与部署文档
一、数据库变更说明
1.1 新增表:t_daily_report_global_config
表结构:
CREATE TABLE IF NOT EXISTS t_daily_report_global_config (
id BIGINT NOT NULL DEFAULT 1 COMMENT '主键(固定为1)',
sum_data_fields VARCHAR(1000) NULL COMMENT '求和数据采集和显示字段列表(JSON格式)',
create_time DATETIME NULL COMMENT '创建时间',
update_time DATETIME NULL COMMENT '更新时间'
)
UNIQUE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 1
PROPERTIES("replication_num" = "1")
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 主键,固定为1(全局配置只有一条记录) |
| sum_data_fields | VARCHAR(1000) | 求和数据采集和显示字段列表,JSON格式 |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
数据示例:
INSERT INTO t_daily_report_global_config (id, sum_data_fields, create_time, update_time)
VALUES (1, '["sharp_electricity","peak_electricity","flat_electricity","valley_electricity"]', NOW(), NOW());
1.2 自动初始化
系统启动时会自动执行以下操作:
- 检查表是否存在,不存在则创建
- 检查ID=1的记录是否存在,不存在则初始化一条空记录
相关代码:db_init.py
二、部署步骤
2.1 开发环境部署
前置条件:
- Python 3.12+
- MySQL/Apache Doris 数据库
- Git
步骤:
- 克隆代码
git clone <仓库地址>
cd ylt_diy
- 安装依赖
pip install -r requirements.txt
- 配置环境变量(可选)
# 设置数据库连接(默认值见下文)
export DB_HOST=haoslm2.xicp.net
export DB_PORT=10216
export DB_USER=root
export DB_PASSWORD=your_password
export DB_DATABASE=ylt_power_diy
export DEPLOY_RUN_PORT=5000
- 启动开发服务器
python app.py
- 访问系统
打开浏览器访问:http://localhost:5000
2.2 生产环境部署
前置条件:
- Linux 服务器(推荐 CentOS 7+)
- Python 3.12+
- MySQL/Apache Doris 数据库
- Nginx(可选,用于反向代理)
步骤:
- 克隆代码
git clone <仓库地址>
cd ylt_diy
- 安装依赖
pip install -r requirements.txt
- 配置环境变量
创建 .env 文件:
DEPLOY_RUN_PORT=5000
DB_HOST=haoslm2.xicp.net
DB_PORT=10216
DB_USER=root
DB_PASSWORD=your_password
DB_DATABASE=ylt_power_diy
- 创建服务配置
创建 /etc/systemd/system/ylt_daily_report.service:
[Unit]
Description=订单日报系统
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/path/to/ylt_diy
Environment="DEPLOY_RUN_PORT=5000"
Environment="DB_HOST=haoslm2.xicp.net"
Environment="DB_PORT=10216"
Environment="DB_USER=root"
Environment="DB_PASSWORD=your_password"
Environment="DB_DATABASE=ylt_power_diy"
ExecStart=/usr/bin/python3 app.py
Restart=always
[Install]
WantedBy=multi-user.target
- 启动服务
systemctl daemon-reload
systemctl start ylt_daily_report
systemctl enable ylt_daily_report
- 配置 Nginx 反向代理(可选)
创建 /etc/nginx/conf.d/ylt_daily_report.conf:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /public/ {
root /path/to/ylt_diy;
expires 30d;
}
}
- 重启 Nginx
nginx -t
systemctl restart nginx
2.3 数据库配置
默认配置:
| 配置项 | 默认值 | 说明 |
|---|---|---|
| DB_HOST | haoslm2.xicp.net | 数据库主机地址 |
| DB_PORT | 10216 | 数据库端口 |
| DB_USER | root | 数据库用户名 |
| DB_PASSWORD | (空) | 数据库密码 |
| DB_DATABASE | ylt_power_diy | 数据库名 |
连接方式:
系统使用 PyMySQL 连接数据库,支持 MySQL 和 Apache Doris(MySQL 协议兼容)。
相关代码:db.py
三、版本升级
3.1 升级步骤
- 拉取最新代码
cd /path/to/ylt_diy
git pull
- 安装新依赖(如果有)
pip install -r requirements.txt
- 重启服务
systemctl restart ylt_daily_report
3.2 数据库自动迁移
系统启动时会自动执行数据库初始化,包括:
- 创建缺失的表
- 添加缺失的字段
- 初始化全局配置记录
注意:如果出现数据库迁移失败,请检查数据库连接和权限。
四、备份与恢复
4.1 数据库备份
# 使用 mysqldump 备份
mysqldump -h haoslm2.xicp.net -P 10216 -u root -p ylt_power_diy > backup.sql
# 使用 Doris 备份命令(如果使用 Doris)
curl -X POST http://doris-be:8030/api/bootstrap -d '{"type":"backup","backup_name":"daily_report_backup","storage":"hdfs://your-hdfs/path"}'
4.2 数据库恢复
# 使用 mysql 命令恢复
mysql -h haoslm2.xicp.net -P 10216 -u root -p ylt_power_diy < backup.sql
4.3 文件备份
# 备份报表文件
tar -czvf reports_backup.tar.gz public/reports/
# 备份配置文件
tar -czvf config_backup.tar.gz lib/
五、常见部署问题
5.1 数据库连接失败
问题:系统启动时提示数据库连接失败
解决:
- 检查数据库主机和端口是否正确
- 确认数据库服务正常运行
- 检查数据库用户名和密码
- 确认网络连通性(ping 数据库主机)
5.2 端口被占用
问题:启动时提示端口 5000 被占用
解决:
# 查看占用进程
lsof -i :5000
# 杀死占用进程
kill -9 <PID>
# 或修改端口
export DEPLOY_RUN_PORT=5001
5.3 静态文件加载失败
问题:页面样式和脚本无法加载
解决:
- 检查
public/static/目录是否存在 - 确认 Flask 应用的
static_folder配置正确 - 清除浏览器缓存(Ctrl + Shift + R)
5.4 定时任务不执行
问题:每天 08:01 的定时任务没有执行
解决:
- 确认服务正常运行(
systemctl status ylt_daily_report) - 检查日志文件(
/app/work/logs/bypass/) - 确认系统时间正确
- 检查配置是否启用(
is_active = 1)
5.5 内存不足
问题:服务运行一段时间后崩溃
解决:
- 增加服务器内存
- 优化查询语句,减少内存使用
- 配置定时清理任务
六、日志管理
6.1 日志位置
- 应用日志:
/app/work/logs/bypass/ - 系统日志:
/var/log/syslog(Linux)
6.2 日志级别
- INFO:普通信息
- WARNING:警告信息
- ERROR:错误信息
6.3 查看日志
# 查看应用日志
tail -f /app/work/logs/bypass/app.log
# 查看系统日志
journalctl -u ylt_daily_report -f
七、安全建议
7.1 数据库安全
- 使用强密码
- 限制数据库访问 IP
- 定期备份数据库
7.2 应用安全
- 使用 HTTPS
- 定期更新依赖
- 关闭调试模式(生产环境)
- 配置防火墙
7.3 服务器安全
- 禁用 SSH 密码登录(使用密钥)
- 定期更新系统
- 禁用不必要的服务