Files
happy-life-star/deploy-all.sh
T
2025-10-30 16:55:22 +08:00

251 lines
6.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# 情绪博物馆 - 一键式部署脚本
# 同时部署后端、前端和管理后台到远程服务器 101.200.208.45
# 使用方法: bash deploy-all.sh [backend|frontend|admin|all]
# 默认部署所有服务
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
log_section() {
echo ""
echo -e "${BLUE}╔════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}${NC} $1"
echo -e "${BLUE}╚════════════════════════════════════════════════════════════════╝${NC}"
echo ""
}
# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
# 部署类型(默认为all
DEPLOY_TYPE="${1:-all}"
# 验证部署类型
if [[ ! "$DEPLOY_TYPE" =~ ^(backend|frontend|admin|all)$ ]]; then
log_error "无效的部署类型: $DEPLOY_TYPE"
echo "使用方法: bash deploy-all.sh [backend|frontend|admin|all]"
exit 1
fi
# 记录开始时间
START_TIME=$(date +%s)
# ============================================================================
# 部署后端
# ============================================================================
deploy_backend() {
log_section "开始部署后端服务"
if [ ! -f "backend-single/deploy.sh" ]; then
log_error "后端部署脚本不存在: backend-single/deploy.sh"
return 1
fi
log_info "执行后端部署脚本..."
cd backend-single
if bash deploy.sh remote; then
log_info "✅ 后端部署成功"
cd ..
return 0
else
log_error "❌ 后端部署失败"
cd ..
return 1
fi
}
# ============================================================================
# 部署前端
# ============================================================================
deploy_frontend() {
log_section "开始部署前端应用"
if [ ! -f "web/deploy.sh" ]; then
log_error "前端部署脚本不存在: web/deploy.sh"
return 1
fi
log_info "执行前端部署脚本..."
cd web
if bash deploy.sh; then
log_info "✅ 前端部署成功"
cd ..
return 0
else
log_error "❌ 前端部署失败"
cd ..
return 1
fi
}
# ============================================================================
# 部署管理后台
# ============================================================================
deploy_admin() {
log_section "开始部署管理后台"
if [ ! -f "web-admin/deploy.sh" ]; then
log_error "管理后台部署脚本不存在: web-admin/deploy.sh"
return 1
fi
log_info "执行管理后台部署脚本..."
cd web-admin
if bash deploy.sh; then
log_info "✅ 管理后台部署成功"
cd ..
return 0
else
log_error "❌ 管理后台部署失败"
cd ..
return 1
fi
}
# ============================================================================
# 主程序
# ============================================================================
log_section "情绪博物馆 - 一键式部署"
log_info "部署类型: $DEPLOY_TYPE"
log_info "部署时间: $(date '+%Y-%m-%d %H:%M:%S')"
BACKEND_SUCCESS=true
FRONTEND_SUCCESS=true
ADMIN_SUCCESS=true
# 执行部署
case "$DEPLOY_TYPE" in
backend)
if ! deploy_backend; then
BACKEND_SUCCESS=false
fi
;;
frontend)
if ! deploy_frontend; then
FRONTEND_SUCCESS=false
fi
;;
admin)
if ! deploy_admin; then
ADMIN_SUCCESS=false
fi
;;
all)
if ! deploy_backend; then
BACKEND_SUCCESS=false
fi
if ! deploy_frontend; then
FRONTEND_SUCCESS=false
fi
if ! deploy_admin; then
ADMIN_SUCCESS=false
fi
;;
esac
# ============================================================================
# 部署总结
# ============================================================================
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
log_section "部署完成总结"
if [ "$DEPLOY_TYPE" = "backend" ] || [ "$DEPLOY_TYPE" = "all" ]; then
if [ "$BACKEND_SUCCESS" = true ]; then
log_info "✅ 后端部署: 成功"
else
log_error "❌ 后端部署: 失败"
fi
fi
if [ "$DEPLOY_TYPE" = "frontend" ] || [ "$DEPLOY_TYPE" = "all" ]; then
if [ "$FRONTEND_SUCCESS" = true ]; then
log_info "✅ 前端部署: 成功"
else
log_error "❌ 前端部署: 失败"
fi
fi
if [ "$DEPLOY_TYPE" = "admin" ] || [ "$DEPLOY_TYPE" = "all" ]; then
if [ "$ADMIN_SUCCESS" = true ]; then
log_info "✅ 管理后台部署: 成功"
else
log_error "❌ 管理后台部署: 失败"
fi
fi
log_info "部署耗时: ${DURATION}"
# ============================================================================
# 访问信息
# ============================================================================
# 检查部署结果
ALL_SUCCESS=true
if [ "$DEPLOY_TYPE" = "all" ]; then
if [ "$BACKEND_SUCCESS" = false ] || [ "$FRONTEND_SUCCESS" = false ] || [ "$ADMIN_SUCCESS" = false ]; then
ALL_SUCCESS=false
fi
elif [ "$DEPLOY_TYPE" = "backend" ] && [ "$BACKEND_SUCCESS" = false ]; then
ALL_SUCCESS=false
elif [ "$DEPLOY_TYPE" = "frontend" ] && [ "$FRONTEND_SUCCESS" = false ]; then
ALL_SUCCESS=false
elif [ "$DEPLOY_TYPE" = "admin" ] && [ "$ADMIN_SUCCESS" = false ]; then
ALL_SUCCESS=false
fi
if [ "$ALL_SUCCESS" = true ]; then
echo ""
log_section "部署成功!"
if [ "$DEPLOY_TYPE" = "backend" ] || [ "$DEPLOY_TYPE" = "all" ]; then
log_info "🔌 后端API地址: http://101.200.208.45:19089/api"
log_info "📊 WebSocket地址: ws://101.200.208.45:19089/ws"
fi
if [ "$DEPLOY_TYPE" = "frontend" ] || [ "$DEPLOY_TYPE" = "all" ]; then
log_info "📱 前端访问地址: http://101.200.208.45/emotion-museum/"
fi
if [ "$DEPLOY_TYPE" = "admin" ] || [ "$DEPLOY_TYPE" = "all" ]; then
log_info "🔧 管理后台地址: http://101.200.208.45/emotion-museum-admin/"
fi
echo ""
exit 0
else
log_error "❌ 部署失败"
exit 1
fi