feat: 建立监控告警体系和生产环境配置

阶段三:建立监控告警体系
- 集成Sentry错误监控:安装依赖,创建配置文件,初始化Sentry
- 配置性能监控:创建监控工具类,实现健康检查API
- 更新环境变量模板,添加Sentry和数据库配置

阶段四:配置生产环境
- 创建生产环境变量模板
- 创建Dockerfile和docker-compose.prod.yml
- 创建备份和恢复脚本
- 设置脚本执行权限
This commit is contained in:
张翔
2026-03-09 11:00:42 +08:00
parent 6d92024b63
commit 4897c6e11c
14 changed files with 4475 additions and 40 deletions
+53
View File
@@ -0,0 +1,53 @@
#!/bin/bash
# 备份脚本
# 用法: ./scripts/backup.sh
set -e
BACKUP_DIR="./backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_NAME="backup_$DATE"
# 创建备份目录
mkdir -p "$BACKUP_DIR/$BACKUP_NAME"
echo "开始备份..."
# 备份数据库
if [ -f "./data/prod.db" ]; then
echo "备份数据库..."
cp ./data/prod.db "$BACKUP_DIR/$BACKUP_NAME/database.db"
else
echo "警告: 数据库文件不存在"
fi
# 备份上传文件
if [ -d "./uploads" ]; then
echo "备份上传文件..."
cp -r ./uploads "$BACKUP_DIR/$BACKUP_NAME/uploads"
else
echo "警告: uploads目录不存在"
fi
# 备份配置
if [ -f ".env.production" ]; then
echo "备份配置..."
cp .env.production "$BACKUP_DIR/$BACKUP_NAME/.env.production"
else
echo "警告: .env.production文件不存在"
fi
# 压缩备份
echo "压缩备份..."
tar -czf "$BACKUP_DIR/$BACKUP_NAME.tar.gz" -C "$BACKUP_DIR" "$BACKUP_NAME"
# 删除临时目录
rm -rf "$BACKUP_DIR/$BACKUP_NAME"
# 保留最近7天的备份
echo "清理旧备份..."
find "$BACKUP_DIR" -name "backup_*.tar.gz" -mtime +7 -delete
echo "备份完成: $BACKUP_DIR/$BACKUP_NAME.tar.gz"
echo "备份大小: $(du -h "$BACKUP_DIR/$BACKUP_NAME.tar.gz" | cut -f1)"
+69
View File
@@ -0,0 +1,69 @@
#!/bin/bash
# 恢复脚本
# 用法: ./scripts/restore.sh <backup_file.tar.gz>
set -e
if [ -z "$1" ]; then
echo "错误: 请指定备份文件"
echo "用法: ./scripts/restore.sh <backup_file.tar.gz>"
exit 1
fi
BACKUP_FILE="$1"
if [ ! -f "$BACKUP_FILE" ]; then
echo "错误: 备份文件不存在: $BACKUP_FILE"
exit 1
fi
echo "警告: 此操作将覆盖当前数据!"
read -p "确认继续? (yes/no): " confirm
if [ "$confirm" != "yes" ]; then
echo "操作已取消"
exit 0
fi
# 创建临时目录
TEMP_DIR="./temp_restore_$(date +%s)"
mkdir -p "$TEMP_DIR"
echo "解压备份..."
tar -xzf "$BACKUP_FILE" -C "$TEMP_DIR"
# 获取备份目录名
BACKUP_DIR_NAME=$(ls "$TEMP_DIR")
BACKUP_PATH="$TEMP_DIR/$BACKUP_DIR_NAME"
# 恢复数据库
if [ -f "$BACKUP_PATH/database.db" ]; then
echo "恢复数据库..."
cp "$BACKUP_PATH/database.db" ./data/prod.db
else
echo "警告: 备份中没有数据库文件"
fi
# 恢复上传文件
if [ -d "$BACKUP_PATH/uploads" ]; then
echo "恢复上传文件..."
rm -rf ./uploads/*
cp -r "$BACKUP_PATH/uploads"/* ./uploads/ 2>/dev/null || true
else
echo "警告: 备份中没有uploads目录"
fi
# 恢复配置
if [ -f "$BACKUP_PATH/.env.production" ]; then
echo "恢复配置..."
cp "$BACKUP_PATH/.env.production" ./.env.production
else
echo "警告: 备份中没有配置文件"
fi
# 清理临时文件
rm -rf "$TEMP_DIR"
echo "恢复完成!"
echo "请重启应用以使更改生效"