feat: 环境配置纳入版本管理并更新文档
- 将 .env 和 .env.local 纳入版本管理 - 更新 .gitignore,移除对环境文件的忽略 - 在 README.md 中添加详细的数据库配置和启动说明 - 同步 server/.env 与项目根目录配置 - 修复后端数据库连接问题
This commit is contained in:
Executable
+85
@@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env bash
|
||||
# ============================================================
|
||||
# 从服务器同步数据库到本地
|
||||
# 用法: bash sync-db-from-server.sh
|
||||
# ============================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# 服务器配置(从 deploy.sh 读取)
|
||||
SERVER="h2agent"
|
||||
REMOTE_DB_USER="govai"
|
||||
REMOTE_DB_PASS="GovAI@2024Secure"
|
||||
REMOTE_DB_NAME="govai_portal"
|
||||
|
||||
# 本地数据库配置
|
||||
LOCAL_DB_USER="freedak"
|
||||
LOCAL_DB_NAME="govai_portal"
|
||||
BACKUP_FILE="/tmp/govai_portal_$(date +%Y%m%d_%H%M%S).sql"
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
BLUE='\033[0;34m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[0;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
log() { echo -e "${GREEN}[✓]${NC} $1"; }
|
||||
step() { echo -e "\n${BLUE}==== $1 ====${NC}"; }
|
||||
warn() { echo -e "${YELLOW}[!]${NC} $1"; }
|
||||
err() { echo -e "${RED}[✗]${NC} $1"; exit 1; }
|
||||
|
||||
step "从服务器导出数据库"
|
||||
log "服务器: $SERVER"
|
||||
log "数据库: $REMOTE_DB_NAME"
|
||||
|
||||
# 在服务器上导出数据库
|
||||
ssh $SERVER "PGPASSWORD='$REMOTE_DB_PASS' pg_dump -h localhost -U $REMOTE_DB_USER -d $REMOTE_DB_NAME --clean --if-exists" > "$BACKUP_FILE"
|
||||
|
||||
if [ ! -s "$BACKUP_FILE" ]; then
|
||||
err "数据库导出失败或文件为空"
|
||||
fi
|
||||
|
||||
log "导出完成: $BACKUP_FILE ($(du -h "$BACKUP_FILE" | cut -f1))"
|
||||
|
||||
step "导入到本地数据库"
|
||||
warn "这将清空本地数据库 $LOCAL_DB_NAME 的所有数据!"
|
||||
read -p "确认继续? (yes/no): " confirm
|
||||
if [ "$confirm" != "yes" ]; then
|
||||
log "取消操作"
|
||||
rm -f "$BACKUP_FILE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 确保本地数据库存在
|
||||
log "检查本地数据库..."
|
||||
/Applications/Postgres.app/Contents/Versions/16/bin/psql -U $LOCAL_DB_USER -d postgres -tc "SELECT 1 FROM pg_database WHERE datname='$LOCAL_DB_NAME'" | grep -q 1 || \
|
||||
/Applications/Postgres.app/Contents/Versions/16/bin/psql -U $LOCAL_DB_USER -d postgres -c "CREATE DATABASE $LOCAL_DB_NAME;"
|
||||
|
||||
# 导入数据
|
||||
log "导入数据到本地..."
|
||||
/Applications/Postgres.app/Contents/Versions/16/bin/psql -U $LOCAL_DB_USER -d $LOCAL_DB_NAME -f "$BACKUP_FILE" 2>&1 | tail -20
|
||||
|
||||
log "导入完成"
|
||||
|
||||
# 验证数据
|
||||
step "验证数据"
|
||||
user_count=$(/Applications/Postgres.app/Contents/Versions/16/bin/psql -U $LOCAL_DB_USER -d $LOCAL_DB_NAME -tc "SELECT COUNT(*) FROM users;")
|
||||
app_count=$(/Applications/Postgres.app/Contents/Versions/16/bin/psql -U $LOCAL_DB_USER -d $LOCAL_DB_NAME -tc "SELECT COUNT(*) FROM applications;")
|
||||
|
||||
log "用户数: $(echo $user_count | xargs)"
|
||||
log "应用数: $(echo $app_count | xargs)"
|
||||
|
||||
# 清理备份文件
|
||||
read -p "是否删除备份文件? (yes/no): " delete_backup
|
||||
if [ "$delete_backup" = "yes" ]; then
|
||||
rm -f "$BACKUP_FILE"
|
||||
log "备份文件已删除"
|
||||
else
|
||||
log "备份文件保留在: $BACKUP_FILE"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}════════════════════════════════════════${NC}"
|
||||
echo -e "${GREEN} 数据库同步完成!${NC}"
|
||||
echo -e "${GREEN} 本地数据库: $LOCAL_DB_NAME${NC}"
|
||||
echo -e "${GREEN}════════════════════════════════════════${NC}"
|
||||
Reference in New Issue
Block a user