feat: 阿里云 OSS 迁移至腾讯云 COS + 完善部署配置
COS 迁移: - 后端签名服务改为 COS HMAC-SHA1 表单直传签名 - config.py: OSS_* 配置项替换为 COS_SECRET_ID/KEY/REGION/BUCKET_NAME/CDN_DOMAIN - upload.py: UploadPolicyResponse 改为 COS 字段 - 前端 useOSSUpload hook: FormData 字段改为 COS 格式 - 前端 api.ts: UploadPolicyResponse 类型对齐 部署配置: - docker-compose.yml: 新增 Nginx + 前端容器,数据卷宿主机持久化 - Nginx: HTTPS + HTTP/2 + SSE 长连接 + API/前端反向代理 - backup.sh: PostgreSQL 每日备份 → 本地 + COS - .env.example: 更新为 COS 配置模板 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
f02b3f4098
commit
8ab2d869fc
Executable
+49
@@ -0,0 +1,49 @@
|
||||
#!/bin/bash
|
||||
# ===========================
|
||||
# PostgreSQL 每日备份脚本
|
||||
# 备份到本地 + 上传到腾讯云 COS
|
||||
# ===========================
|
||||
# 配合 crontab 使用:
|
||||
# 0 3 * * * /path/to/backup.sh >> /var/log/miaosi-backup.log 2>&1
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# ---- 配置 ----
|
||||
BACKUP_DIR="${BACKUP_DIR:-/var/backups/miaosi}"
|
||||
POSTGRES_CONTAINER="${POSTGRES_CONTAINER:-miaosi-postgres}"
|
||||
POSTGRES_USER="${POSTGRES_USER:-postgres}"
|
||||
POSTGRES_DB="${POSTGRES_DB:-miaosi}"
|
||||
RETAIN_DAYS="${RETAIN_DAYS:-7}"
|
||||
|
||||
# COS 备份桶(需要先安装 coscli 并配置好凭证)
|
||||
COS_BACKUP_BUCKET="${COS_BACKUP_BUCKET:-}"
|
||||
COS_BACKUP_PREFIX="${COS_BACKUP_PREFIX:-backups/postgres}"
|
||||
|
||||
# ---- 执行 ----
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
FILENAME="miaosi_${DATE}.sql.gz"
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
echo "[$(date)] 开始备份数据库 ${POSTGRES_DB}..."
|
||||
|
||||
# 1. pg_dump 导出并压缩
|
||||
docker exec "$POSTGRES_CONTAINER" pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB" | gzip > "${BACKUP_DIR}/${FILENAME}"
|
||||
|
||||
echo "[$(date)] 本地备份完成: ${BACKUP_DIR}/${FILENAME}"
|
||||
|
||||
# 2. 上传到 COS(如果配置了备份桶)
|
||||
if [ -n "$COS_BACKUP_BUCKET" ]; then
|
||||
if command -v coscli &> /dev/null; then
|
||||
coscli cp "${BACKUP_DIR}/${FILENAME}" "cos://${COS_BACKUP_BUCKET}/${COS_BACKUP_PREFIX}/${FILENAME}"
|
||||
echo "[$(date)] 已上传到 COS: ${COS_BACKUP_BUCKET}/${COS_BACKUP_PREFIX}/${FILENAME}"
|
||||
else
|
||||
echo "[$(date)] 警告: coscli 未安装,跳过 COS 上传"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 3. 清理过期的本地备份
|
||||
find "$BACKUP_DIR" -name "miaosi_*.sql.gz" -mtime +"$RETAIN_DAYS" -delete
|
||||
echo "[$(date)] 已清理 ${RETAIN_DAYS} 天前的本地备份"
|
||||
|
||||
echo "[$(date)] 备份完成"
|
||||
Reference in New Issue
Block a user