feat: 初始化考培练系统项目
- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
223
deploy/scripts/check-config.sh
Executable file
223
deploy/scripts/check-config.sh
Executable file
@@ -0,0 +1,223 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 配置一致性检查脚本
|
||||
# 用于快速验证系统各组件配置是否一致
|
||||
|
||||
echo "🔧 配置一致性检查脚本"
|
||||
echo "========================"
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 检查结果统计
|
||||
PASS_COUNT=0
|
||||
FAIL_COUNT=0
|
||||
|
||||
# 检查函数
|
||||
check_service() {
|
||||
local service_name=$1
|
||||
local url=$2
|
||||
local expected_response=$3
|
||||
|
||||
echo -n "检查 $service_name ... "
|
||||
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
response=$(curl -s --connect-timeout 5 "$url" 2>/dev/null)
|
||||
if [[ $? -eq 0 && "$response" == *"$expected_response"* ]]; then
|
||||
echo -e "${GREEN}✅ 通过${NC}"
|
||||
((PASS_COUNT++))
|
||||
else
|
||||
echo -e "${RED}❌ 失败${NC}"
|
||||
echo " 期望包含: $expected_response"
|
||||
echo " 实际响应: $response"
|
||||
((FAIL_COUNT++))
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ 跳过 (curl 未安装)${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# 检查Docker服务
|
||||
check_docker_service() {
|
||||
local service_name=$1
|
||||
echo -n "检查 Docker 服务 $service_name ... "
|
||||
|
||||
if command -v docker-compose >/dev/null 2>&1; then
|
||||
if docker-compose ps | grep -q "$service_name.*Up"; then
|
||||
echo -e "${GREEN}✅ 运行中${NC}"
|
||||
((PASS_COUNT++))
|
||||
else
|
||||
echo -e "${RED}❌ 未运行${NC}"
|
||||
((FAIL_COUNT++))
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ 跳过 (docker-compose 未安装)${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# 检查配置文件
|
||||
check_config_file() {
|
||||
local file_path=$1
|
||||
local description=$2
|
||||
|
||||
echo -n "检查 $description ... "
|
||||
|
||||
if [[ -f "$file_path" ]]; then
|
||||
echo -e "${GREEN}✅ 存在${NC}"
|
||||
((PASS_COUNT++))
|
||||
else
|
||||
echo -e "${RED}❌ 缺失${NC}"
|
||||
echo " 文件路径: $file_path"
|
||||
((FAIL_COUNT++))
|
||||
fi
|
||||
}
|
||||
|
||||
# 检查端口占用
|
||||
check_port() {
|
||||
local port=$1
|
||||
local service_name=$2
|
||||
|
||||
echo -n "检查端口 $port ($service_name) ... "
|
||||
|
||||
if command -v lsof >/dev/null 2>&1; then
|
||||
if lsof -i :$port >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✅ 已占用${NC}"
|
||||
((PASS_COUNT++))
|
||||
else
|
||||
echo -e "${RED}❌ 未占用${NC}"
|
||||
((FAIL_COUNT++))
|
||||
fi
|
||||
elif command -v netstat >/dev/null 2>&1; then
|
||||
if netstat -an | grep -q ":$port "; then
|
||||
echo -e "${GREEN}✅ 已占用${NC}"
|
||||
((PASS_COUNT++))
|
||||
else
|
||||
echo -e "${RED}❌ 未占用${NC}"
|
||||
((FAIL_COUNT++))
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ 跳过 (lsof/netstat 未安装)${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
echo "1. 检查基础服务状态"
|
||||
echo "-------------------"
|
||||
|
||||
# 检查Docker服务
|
||||
check_docker_service "mysql"
|
||||
check_docker_service "redis"
|
||||
|
||||
# 检查端口占用
|
||||
check_port 3306 "MySQL"
|
||||
check_port 6379 "Redis"
|
||||
check_port 8000 "后端API"
|
||||
check_port 3001 "前端开发服务器"
|
||||
|
||||
echo ""
|
||||
echo "2. 检查服务健康状态"
|
||||
echo "-------------------"
|
||||
|
||||
# 检查后端健康状态
|
||||
check_service "后端API健康检查" "http://localhost:8000/health" "healthy"
|
||||
|
||||
# 检查前端服务
|
||||
check_service "前端服务" "http://localhost:3001" "考培练系统"
|
||||
|
||||
echo ""
|
||||
echo "3. 检查配置文件"
|
||||
echo "---------------"
|
||||
|
||||
# 检查关键配置文件
|
||||
check_config_file "kaopeilian-backend/app/config/settings.py" "后端配置文件"
|
||||
check_config_file "kaopeilian-frontend/src/api/config.ts" "前端API配置"
|
||||
check_config_file "docker-compose.yml" "Docker配置文件"
|
||||
check_config_file "配置一致性检查清单.md" "配置检查清单"
|
||||
|
||||
echo ""
|
||||
echo "4. 检查认证功能"
|
||||
echo "---------------"
|
||||
|
||||
# 检查登录API
|
||||
echo -n "检查登录API ... "
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
login_response=$(curl -s -X POST http://localhost:8000/api/v1/auth/login \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"username": "testuser", "password": "TestPass123!"}' 2>/dev/null)
|
||||
|
||||
if [[ "$login_response" == *"access_token"* ]]; then
|
||||
echo -e "${GREEN}✅ 正常工作${NC}"
|
||||
((PASS_COUNT++))
|
||||
|
||||
# 提取token测试认证
|
||||
if command -v jq >/dev/null 2>&1; then
|
||||
token=$(echo "$login_response" | jq -r '.data.access_token' 2>/dev/null)
|
||||
if [[ "$token" != "null" && "$token" != "" ]]; then
|
||||
echo -n "检查token认证 ... "
|
||||
auth_response=$(curl -s -H "Authorization: Bearer $token" \
|
||||
http://localhost:8000/api/v1/auth/me 2>/dev/null)
|
||||
|
||||
if [[ "$auth_response" == *"testuser"* ]]; then
|
||||
echo -e "${GREEN}✅ 正常工作${NC}"
|
||||
((PASS_COUNT++))
|
||||
else
|
||||
echo -e "${RED}❌ 失败${NC}"
|
||||
((FAIL_COUNT++))
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo " (跳过token测试 - jq未安装)"
|
||||
fi
|
||||
else
|
||||
echo -e "${RED}❌ 失败${NC}"
|
||||
echo " 响应: $login_response"
|
||||
((FAIL_COUNT++))
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ 跳过 (curl 未安装)${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "5. 检查CORS配置"
|
||||
echo "---------------"
|
||||
|
||||
echo -n "检查CORS预检请求 ... "
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
cors_response=$(curl -s -X OPTIONS http://localhost:8000/api/v1/auth/login \
|
||||
-H "Origin: http://localhost:3001" \
|
||||
-H "Access-Control-Request-Method: POST" \
|
||||
-H "Access-Control-Request-Headers: Content-Type" 2>/dev/null)
|
||||
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo -e "${GREEN}✅ 正常响应${NC}"
|
||||
((PASS_COUNT++))
|
||||
else
|
||||
echo -e "${RED}❌ 失败${NC}"
|
||||
((FAIL_COUNT++))
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ 跳过 (curl 未安装)${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "========================"
|
||||
echo "📊 检查结果统计"
|
||||
echo "------------------------"
|
||||
echo -e "通过: ${GREEN}$PASS_COUNT${NC}"
|
||||
echo -e "失败: ${RED}$FAIL_COUNT${NC}"
|
||||
|
||||
if [[ $FAIL_COUNT -eq 0 ]]; then
|
||||
echo -e "\n🎉 ${GREEN}所有检查都通过了!系统配置正常。${NC}"
|
||||
exit 0
|
||||
else
|
||||
echo -e "\n⚠️ ${YELLOW}发现 $FAIL_COUNT 个问题,请检查配置。${NC}"
|
||||
echo ""
|
||||
echo "💡 解决建议:"
|
||||
echo "1. 确保Docker服务已启动: docker-compose up -d"
|
||||
echo "2. 检查端口是否被占用或服务未启动"
|
||||
echo "3. 参考 '配置一致性检查清单.md' 核对配置"
|
||||
echo "4. 确保数据库密码、CORS域名等配置一致"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user