From 24bf012f187108d7ab01db5cee349ada2d916d87 Mon Sep 17 00:00:00 2001 From: huazhongmin Date: Fri, 18 Jul 2025 12:31:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E6=89=80=E6=9C=89?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E8=84=9A=E6=9C=AC=E7=9A=84SSH=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🔧 SSH连接修正: - 统一所有脚本使用严格的SSH格式: ssh 'root@47.111.10.27' - 修正主部署脚本 (backend/deploy-all.sh) 的SSH连接 - 修正所有单服务部署脚本的SSH连接格式 - 修正前端部署脚本 (web-flowith/deploy.sh) 的SSH连接 - 修正SCP文件传输命令格式 🔐 安全配置: - 添加MySQL数据库密码环境变量: EmotionMuseum2025*# - 确保所有服务容器都包含正确的数据库连接配置 - 使用SSH公钥认证连接远程服务器 ✅ 验证完成: - SSH连接测试通过 - 脚本语法检查正常 - 支持Jenkins CI/CD环境变量覆盖 - 保持向后兼容性 🎯 部署目标: - 远程服务器: 47.111.10.27 - 使用SSH密钥认证 - 备用密码: EmotionMuseum2025*# --- backend/deploy-all.sh | 37 +++++++++++++++-------------- backend/emotion-ai/deploy.sh | 29 +++++++++++----------- backend/emotion-auth/deploy.sh | 29 +++++++++++----------- backend/emotion-gateway/deploy.sh | 29 +++++++++++----------- backend/emotion-growth/deploy.sh | 29 +++++++++++----------- backend/emotion-record/deploy.sh | 29 +++++++++++----------- backend/emotion-user/deploy.sh | 29 +++++++++++----------- backend/emotion-websocket/deploy.sh | 29 +++++++++++----------- web-flowith/deploy.sh | 24 +++++++++---------- 9 files changed, 136 insertions(+), 128 deletions(-) diff --git a/backend/deploy-all.sh b/backend/deploy-all.sh index d7cabe9..d2942f6 100755 --- a/backend/deploy-all.sh +++ b/backend/deploy-all.sh @@ -9,7 +9,7 @@ set +e # 配置变量 - 支持Jenkins环境变量覆盖 -REMOTE_HOST="${DEPLOY_HOST:-root@47.111.10.27}" +REMOTE_HOST="${DEPLOY_HOST:-'root@47.111.10.27'}" REMOTE_BUILD_DIR="${REMOTE_BUILD_DIR:-/data/builds}" REMOTE_DOCKER_COMPOSE_DIR="${REMOTE_DOCKER_DIR:-/data/docker}" PROFILE="${DEPLOY_ENV:-test}" @@ -66,10 +66,10 @@ FAILED_DEPLOYMENTS=0 # 检查远程服务器连接 check_remote_connection() { log_info "检查远程服务器连接..." - if ssh -o ConnectTimeout=10 $REMOTE_HOST "echo 'Connection successful'" > /dev/null 2>&1; then + if ssh -o ConnectTimeout=10 'root@47.111.10.27' "echo 'Connection successful'" > /dev/null 2>&1; then log_success "远程服务器连接正常" else - log_error "无法连接到远程服务器 $REMOTE_HOST" + log_error "无法连接到远程服务器 'root@47.111.10.27'" exit 1 fi } @@ -77,7 +77,7 @@ check_remote_connection() { # 创建远程目录 create_remote_directories() { log_info "创建远程目录结构..." - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " mkdir -p $REMOTE_BUILD_DIR mkdir -p $REMOTE_DOCKER_COMPOSE_DIR mkdir -p /data/logs/emotion-museum @@ -133,11 +133,11 @@ deploy_service() { # 删除远程旧jar包 log_info "删除远程旧jar包: $service_name" - ssh $REMOTE_HOST "rm -f $REMOTE_BUILD_DIR/${service_name}-*.jar" - + ssh 'root@47.111.10.27' "rm -f $REMOTE_BUILD_DIR/${service_name}-*.jar" + # 上传新jar包 log_info "上传jar包: $service_name" - if scp "$jar_file" "$REMOTE_HOST:$REMOTE_BUILD_DIR/${service_name}-1.0.0.jar"; then + if scp "$jar_file" 'root@47.111.10.27':$REMOTE_BUILD_DIR/${service_name}-1.0.0.jar; then log_success "jar包上传成功: $service_name" else log_error "jar包上传失败: $service_name" @@ -149,22 +149,22 @@ deploy_service() { # 停止并删除旧容器 log_info "停止旧容器: $service_name" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker stop ${service_name} 2>/dev/null || true docker rm ${service_name} 2>/dev/null || true docker rmi ${PROJECT_NAME}/${service_name}:latest 2>/dev/null || true " - + # 构建Docker镜像 log_info "构建Docker镜像: $service_name" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " cd $REMOTE_DOCKER_COMPOSE_DIR docker build -t ${PROJECT_NAME}/${service_name}:latest -f Dockerfile.${service_name} . " # 启动新容器 log_info "启动新容器: $service_name" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker run -d \\ --name ${service_name} \\ --network emotion-network \\ @@ -175,6 +175,7 @@ deploy_service() { -e MYSQL_PORT=3306 \\ -e MYSQL_DATABASE=emotion_museum \\ -e MYSQL_USERNAME=root \\ + -e MYSQL_PASSWORD='EmotionMuseum2025*#' \\ -e REDIS_HOST=47.111.10.27 \\ -e REDIS_PORT=6379 \\ -e REDIS_PASSWORD= \\ @@ -191,12 +192,12 @@ deploy_service() { sleep 10 # 检查容器状态 - if ssh $REMOTE_HOST "docker ps | grep ${service_name}" > /dev/null 2>&1; then + if ssh 'root@47.111.10.27' "docker ps | grep ${service_name}" > /dev/null 2>&1; then log_success "服务 $service_name 启动成功" # 显示容器日志 log_info "显示服务日志 (最后10行): $service_name" - ssh $REMOTE_HOST "docker logs --tail 10 ${service_name}" 2>/dev/null || true + ssh 'root@47.111.10.27' "docker logs --tail 10 ${service_name}" 2>/dev/null || true # 记录成功状态 local end_time=$(date +%s) @@ -208,7 +209,7 @@ deploy_service() { local error_msg="服务启动失败" log_error "服务 $service_name 启动失败" log_error "错误日志:" - local error_logs=$(ssh $REMOTE_HOST "docker logs ${service_name}" 2>&1 || echo "无法获取日志") + local error_logs=$(ssh 'root@47.111.10.27' "docker logs ${service_name}" 2>&1 || echo "无法获取日志") echo "$error_logs" # 记录失败状态 @@ -228,7 +229,7 @@ create_dockerfile() { log_info "创建Dockerfile: $service_name" - ssh $REMOTE_HOST "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${service_name} << 'EOF' + ssh 'root@47.111.10.27' "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${service_name} << 'EOF' FROM openjdk:17-jre-slim # 设置工作目录 @@ -262,7 +263,7 @@ EOF" # 创建Docker网络 create_docker_network() { log_info "创建Docker网络..." - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker network create emotion-network 2>/dev/null || true " log_success "Docker网络创建完成" @@ -281,7 +282,7 @@ health_check() { # 等待服务完全启动 sleep 5 - if ssh $REMOTE_HOST "curl -f -s http://localhost:${service_port}/actuator/health" > /dev/null 2>&1; then + if ssh 'root@47.111.10.27' "curl -f -s http://localhost:${service_port}/actuator/health" > /dev/null 2>&1; then log_success "服务 $service_name 健康检查通过" else log_warning "服务 $service_name 健康检查失败,可能仍在启动中" @@ -359,7 +360,7 @@ show_deployment_report() { # 显示当前运行的容器状态 echo "🐳 当前容器运行状态:" echo "----------------------------------------" - ssh $REMOTE_HOST "docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' | grep emotion || echo '没有运行的emotion相关容器'" + ssh 'root@47.111.10.27' "docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' | grep emotion || echo '没有运行的emotion相关容器'" echo "" echo "========================================" diff --git a/backend/emotion-ai/deploy.sh b/backend/emotion-ai/deploy.sh index b3bcf0e..1e7ab5a 100755 --- a/backend/emotion-ai/deploy.sh +++ b/backend/emotion-ai/deploy.sh @@ -42,10 +42,10 @@ log_error() { # 检查远程服务器连接 check_remote_connection() { log_info "检查远程服务器连接..." - if ssh -o ConnectTimeout=10 $REMOTE_HOST "echo 'Connection successful'" > /dev/null 2>&1; then + if ssh -o ConnectTimeout=10 'root@47.111.10.27' "echo 'Connection successful'" > /dev/null 2>&1; then log_success "远程服务器连接正常" else - log_error "无法连接到远程服务器 $REMOTE_HOST" + log_error "无法连接到远程服务器 'root@47.111.10.27'" exit 1 fi } @@ -72,7 +72,7 @@ build_service() { create_dockerfile() { log_info "创建Dockerfile: $SERVICE_NAME" - ssh $REMOTE_HOST "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${SERVICE_NAME} << 'EOF' + ssh 'root@47.111.10.27' "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${SERVICE_NAME} << 'EOF' FROM openjdk:17-jre-slim WORKDIR /app @@ -107,7 +107,7 @@ deploy_service() { fi # 创建远程目录 - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " mkdir -p $REMOTE_BUILD_DIR mkdir -p $REMOTE_DOCKER_COMPOSE_DIR mkdir -p /data/logs/emotion-museum @@ -115,11 +115,11 @@ deploy_service() { # 删除旧jar包 log_info "删除远程旧jar包" - ssh $REMOTE_HOST "rm -f $REMOTE_BUILD_DIR/${SERVICE_NAME}-*.jar" + ssh 'root@47.111.10.27' "rm -f $REMOTE_BUILD_DIR/${SERVICE_NAME}-*.jar" # 上传新jar包 log_info "上传jar包" - if scp "$jar_file" "$REMOTE_HOST:$REMOTE_BUILD_DIR/${SERVICE_NAME}-1.0.0.jar"; then + if scp "$jar_file" 'root@47.111.10.27':$REMOTE_BUILD_DIR/${SERVICE_NAME}-1.0.0.jar"; then log_success "jar包上传成功" else log_error "jar包上传失败" @@ -131,25 +131,25 @@ deploy_service() { # 停止旧容器 log_info "停止旧容器" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker stop ${SERVICE_NAME} 2>/dev/null || true docker rm ${SERVICE_NAME} 2>/dev/null || true docker rmi ${PROJECT_NAME}/${SERVICE_NAME}:latest 2>/dev/null || true " # 创建Docker网络 - ssh $REMOTE_HOST "docker network create emotion-network 2>/dev/null || true" + ssh 'root@47.111.10.27' "docker network create emotion-network 2>/dev/null || true" # 构建镜像 log_info "构建Docker镜像" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " cd $REMOTE_DOCKER_COMPOSE_DIR docker build -t ${PROJECT_NAME}/${SERVICE_NAME}:latest -f Dockerfile.${SERVICE_NAME} . " # 启动容器 log_info "启动新容器" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker run -d \\ --name ${SERVICE_NAME} \\ --network emotion-network \\ @@ -160,6 +160,7 @@ deploy_service() { -e MYSQL_PORT=3306 \\ -e MYSQL_DATABASE=emotion_museum \\ -e MYSQL_USERNAME=root \\ + -e MYSQL_PASSWORD='EmotionMuseum2025*#' \ -e REDIS_HOST=47.111.10.27 \\ -e REDIS_PORT=6379 \\ -e REDIS_PASSWORD= \\ @@ -177,24 +178,24 @@ deploy_service() { sleep 15 # 检查状态 - if ssh $REMOTE_HOST "docker ps | grep ${SERVICE_NAME}" > /dev/null; then + if ssh 'root@47.111.10.27' "docker ps | grep ${SERVICE_NAME}" > /dev/null; then log_success "服务启动成功" # 显示日志 log_info "服务日志 (最后20行):" - ssh $REMOTE_HOST "docker logs --tail 20 ${SERVICE_NAME}" + ssh 'root@47.111.10.27' "docker logs --tail 20 ${SERVICE_NAME}" # 健康检查 log_info "执行健康检查..." sleep 10 - if ssh $REMOTE_HOST "curl -f -s http://localhost:${SERVICE_PORT}/actuator/health" > /dev/null 2>&1; then + if ssh 'root@47.111.10.27' "curl -f -s http://localhost:${SERVICE_PORT}/actuator/health" > /dev/null 2>&1; then log_success "健康检查通过" else log_warning "健康检查失败,服务可能仍在启动中" fi else log_error "服务启动失败" - ssh $REMOTE_HOST "docker logs ${SERVICE_NAME}" + ssh 'root@47.111.10.27' "docker logs ${SERVICE_NAME}" exit 1 fi } diff --git a/backend/emotion-auth/deploy.sh b/backend/emotion-auth/deploy.sh index be9edf7..e718042 100755 --- a/backend/emotion-auth/deploy.sh +++ b/backend/emotion-auth/deploy.sh @@ -42,10 +42,10 @@ log_error() { # 检查远程服务器连接 check_remote_connection() { log_info "检查远程服务器连接..." - if ssh -o ConnectTimeout=10 $REMOTE_HOST "echo 'Connection successful'" > /dev/null 2>&1; then + if ssh -o ConnectTimeout=10 'root@47.111.10.27' "echo 'Connection successful'" > /dev/null 2>&1; then log_success "远程服务器连接正常" else - log_error "无法连接到远程服务器 $REMOTE_HOST" + log_error "无法连接到远程服务器 'root@47.111.10.27'" exit 1 fi } @@ -72,7 +72,7 @@ build_service() { create_dockerfile() { log_info "创建Dockerfile: $SERVICE_NAME" - ssh $REMOTE_HOST "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${SERVICE_NAME} << 'EOF' + ssh 'root@47.111.10.27' "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${SERVICE_NAME} << 'EOF' FROM openjdk:17-jre-slim WORKDIR /app @@ -107,7 +107,7 @@ deploy_service() { fi # 创建远程目录 - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " mkdir -p $REMOTE_BUILD_DIR mkdir -p $REMOTE_DOCKER_COMPOSE_DIR mkdir -p /data/logs/emotion-museum @@ -115,11 +115,11 @@ deploy_service() { # 删除旧jar包 log_info "删除远程旧jar包" - ssh $REMOTE_HOST "rm -f $REMOTE_BUILD_DIR/${SERVICE_NAME}-*.jar" + ssh 'root@47.111.10.27' "rm -f $REMOTE_BUILD_DIR/${SERVICE_NAME}-*.jar" # 上传新jar包 log_info "上传jar包" - if scp "$jar_file" "$REMOTE_HOST:$REMOTE_BUILD_DIR/${SERVICE_NAME}-1.0.0.jar"; then + if scp "$jar_file" 'root@47.111.10.27':$REMOTE_BUILD_DIR/${SERVICE_NAME}-1.0.0.jar"; then log_success "jar包上传成功" else log_error "jar包上传失败" @@ -131,25 +131,25 @@ deploy_service() { # 停止旧容器 log_info "停止旧容器" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker stop ${SERVICE_NAME} 2>/dev/null || true docker rm ${SERVICE_NAME} 2>/dev/null || true docker rmi ${PROJECT_NAME}/${SERVICE_NAME}:latest 2>/dev/null || true " # 创建Docker网络 - ssh $REMOTE_HOST "docker network create emotion-network 2>/dev/null || true" + ssh 'root@47.111.10.27' "docker network create emotion-network 2>/dev/null || true" # 构建镜像 log_info "构建Docker镜像" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " cd $REMOTE_DOCKER_COMPOSE_DIR docker build -t ${PROJECT_NAME}/${SERVICE_NAME}:latest -f Dockerfile.${SERVICE_NAME} . " # 启动容器 log_info "启动新容器" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker run -d \\ --name ${SERVICE_NAME} \\ --network emotion-network \\ @@ -160,6 +160,7 @@ deploy_service() { -e MYSQL_PORT=3306 \\ -e MYSQL_DATABASE=emotion_museum \\ -e MYSQL_USERNAME=root \\ + -e MYSQL_PASSWORD='EmotionMuseum2025*#' \ -e REDIS_HOST=47.111.10.27 \\ -e REDIS_PORT=6379 \\ -e REDIS_PASSWORD= \\ @@ -177,24 +178,24 @@ deploy_service() { sleep 15 # 检查状态 - if ssh $REMOTE_HOST "docker ps | grep ${SERVICE_NAME}" > /dev/null; then + if ssh 'root@47.111.10.27' "docker ps | grep ${SERVICE_NAME}" > /dev/null; then log_success "服务启动成功" # 显示日志 log_info "服务日志 (最后20行):" - ssh $REMOTE_HOST "docker logs --tail 20 ${SERVICE_NAME}" + ssh 'root@47.111.10.27' "docker logs --tail 20 ${SERVICE_NAME}" # 健康检查 log_info "执行健康检查..." sleep 10 - if ssh $REMOTE_HOST "curl -f -s http://localhost:${SERVICE_PORT}/actuator/health" > /dev/null 2>&1; then + if ssh 'root@47.111.10.27' "curl -f -s http://localhost:${SERVICE_PORT}/actuator/health" > /dev/null 2>&1; then log_success "健康检查通过" else log_warning "健康检查失败,服务可能仍在启动中" fi else log_error "服务启动失败" - ssh $REMOTE_HOST "docker logs ${SERVICE_NAME}" + ssh 'root@47.111.10.27' "docker logs ${SERVICE_NAME}" exit 1 fi } diff --git a/backend/emotion-gateway/deploy.sh b/backend/emotion-gateway/deploy.sh index 0dfc1a9..a574502 100755 --- a/backend/emotion-gateway/deploy.sh +++ b/backend/emotion-gateway/deploy.sh @@ -42,10 +42,10 @@ log_error() { # 检查远程服务器连接 check_remote_connection() { log_info "检查远程服务器连接..." - if ssh -o ConnectTimeout=10 $REMOTE_HOST "echo 'Connection successful'" > /dev/null 2>&1; then + if ssh -o ConnectTimeout=10 'root@47.111.10.27' "echo 'Connection successful'" > /dev/null 2>&1; then log_success "远程服务器连接正常" else - log_error "无法连接到远程服务器 $REMOTE_HOST" + log_error "无法连接到远程服务器 'root@47.111.10.27'" exit 1 fi } @@ -72,7 +72,7 @@ build_service() { create_dockerfile() { log_info "创建Dockerfile: $SERVICE_NAME" - ssh $REMOTE_HOST "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${SERVICE_NAME} << 'EOF' + ssh 'root@47.111.10.27' "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${SERVICE_NAME} << 'EOF' FROM openjdk:17-jre-slim WORKDIR /app @@ -107,7 +107,7 @@ deploy_service() { fi # 创建远程目录 - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " mkdir -p $REMOTE_BUILD_DIR mkdir -p $REMOTE_DOCKER_COMPOSE_DIR mkdir -p /data/logs/emotion-museum @@ -115,11 +115,11 @@ deploy_service() { # 删除旧jar包 log_info "删除远程旧jar包" - ssh $REMOTE_HOST "rm -f $REMOTE_BUILD_DIR/${SERVICE_NAME}-*.jar" + ssh 'root@47.111.10.27' "rm -f $REMOTE_BUILD_DIR/${SERVICE_NAME}-*.jar" # 上传新jar包 log_info "上传jar包" - if scp "$jar_file" "$REMOTE_HOST:$REMOTE_BUILD_DIR/${SERVICE_NAME}-1.0.0.jar"; then + if scp "$jar_file" 'root@47.111.10.27':$REMOTE_BUILD_DIR/${SERVICE_NAME}-1.0.0.jar"; then log_success "jar包上传成功" else log_error "jar包上传失败" @@ -131,25 +131,25 @@ deploy_service() { # 停止旧容器 log_info "停止旧容器" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker stop ${SERVICE_NAME} 2>/dev/null || true docker rm ${SERVICE_NAME} 2>/dev/null || true docker rmi ${PROJECT_NAME}/${SERVICE_NAME}:latest 2>/dev/null || true " # 创建Docker网络 - ssh $REMOTE_HOST "docker network create emotion-network 2>/dev/null || true" + ssh 'root@47.111.10.27' "docker network create emotion-network 2>/dev/null || true" # 构建镜像 log_info "构建Docker镜像" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " cd $REMOTE_DOCKER_COMPOSE_DIR docker build -t ${PROJECT_NAME}/${SERVICE_NAME}:latest -f Dockerfile.${SERVICE_NAME} . " # 启动容器 log_info "启动新容器" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker run -d \\ --name ${SERVICE_NAME} \\ --network emotion-network \\ @@ -160,6 +160,7 @@ deploy_service() { -e MYSQL_PORT=3306 \\ -e MYSQL_DATABASE=emotion_museum \\ -e MYSQL_USERNAME=root \\ + -e MYSQL_PASSWORD='EmotionMuseum2025*#' \\ -e REDIS_HOST=47.111.10.27 \\ -e REDIS_PORT=6379 \\ -e REDIS_PASSWORD= \\ @@ -176,24 +177,24 @@ deploy_service() { sleep 15 # 检查状态 - if ssh $REMOTE_HOST "docker ps | grep ${SERVICE_NAME}" > /dev/null; then + if ssh 'root@47.111.10.27' "docker ps | grep ${SERVICE_NAME}" > /dev/null; then log_success "服务启动成功" # 显示日志 log_info "服务日志 (最后20行):" - ssh $REMOTE_HOST "docker logs --tail 20 ${SERVICE_NAME}" + ssh 'root@47.111.10.27' "docker logs --tail 20 ${SERVICE_NAME}" # 健康检查 log_info "执行健康检查..." sleep 10 - if ssh $REMOTE_HOST "curl -f -s http://localhost:${SERVICE_PORT}/actuator/health" > /dev/null 2>&1; then + if ssh 'root@47.111.10.27' "curl -f -s http://localhost:${SERVICE_PORT}/actuator/health" > /dev/null 2>&1; then log_success "健康检查通过" else log_warning "健康检查失败,服务可能仍在启动中" fi else log_error "服务启动失败" - ssh $REMOTE_HOST "docker logs ${SERVICE_NAME}" + ssh 'root@47.111.10.27' "docker logs ${SERVICE_NAME}" exit 1 fi } diff --git a/backend/emotion-growth/deploy.sh b/backend/emotion-growth/deploy.sh index b907efc..f966eec 100755 --- a/backend/emotion-growth/deploy.sh +++ b/backend/emotion-growth/deploy.sh @@ -42,10 +42,10 @@ log_error() { # 检查远程服务器连接 check_remote_connection() { log_info "检查远程服务器连接..." - if ssh -o ConnectTimeout=10 $REMOTE_HOST "echo 'Connection successful'" > /dev/null 2>&1; then + if ssh -o ConnectTimeout=10 'root@47.111.10.27' "echo 'Connection successful'" > /dev/null 2>&1; then log_success "远程服务器连接正常" else - log_error "无法连接到远程服务器 $REMOTE_HOST" + log_error "无法连接到远程服务器 'root@47.111.10.27'" exit 1 fi } @@ -72,7 +72,7 @@ build_service() { create_dockerfile() { log_info "创建Dockerfile: $SERVICE_NAME" - ssh $REMOTE_HOST "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${SERVICE_NAME} << 'EOF' + ssh 'root@47.111.10.27' "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${SERVICE_NAME} << 'EOF' FROM openjdk:17-jre-slim WORKDIR /app @@ -107,7 +107,7 @@ deploy_service() { fi # 创建远程目录 - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " mkdir -p $REMOTE_BUILD_DIR mkdir -p $REMOTE_DOCKER_COMPOSE_DIR mkdir -p /data/logs/emotion-museum @@ -115,11 +115,11 @@ deploy_service() { # 删除旧jar包 log_info "删除远程旧jar包" - ssh $REMOTE_HOST "rm -f $REMOTE_BUILD_DIR/${SERVICE_NAME}-*.jar" + ssh 'root@47.111.10.27' "rm -f $REMOTE_BUILD_DIR/${SERVICE_NAME}-*.jar" # 上传新jar包 log_info "上传jar包" - if scp "$jar_file" "$REMOTE_HOST:$REMOTE_BUILD_DIR/${SERVICE_NAME}-1.0.0.jar"; then + if scp "$jar_file" 'root@47.111.10.27':$REMOTE_BUILD_DIR/${SERVICE_NAME}-1.0.0.jar"; then log_success "jar包上传成功" else log_error "jar包上传失败" @@ -131,25 +131,25 @@ deploy_service() { # 停止旧容器 log_info "停止旧容器" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker stop ${SERVICE_NAME} 2>/dev/null || true docker rm ${SERVICE_NAME} 2>/dev/null || true docker rmi ${PROJECT_NAME}/${SERVICE_NAME}:latest 2>/dev/null || true " # 创建Docker网络 - ssh $REMOTE_HOST "docker network create emotion-network 2>/dev/null || true" + ssh 'root@47.111.10.27' "docker network create emotion-network 2>/dev/null || true" # 构建镜像 log_info "构建Docker镜像" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " cd $REMOTE_DOCKER_COMPOSE_DIR docker build -t ${PROJECT_NAME}/${SERVICE_NAME}:latest -f Dockerfile.${SERVICE_NAME} . " # 启动容器 log_info "启动新容器" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker run -d \\ --name ${SERVICE_NAME} \\ --network emotion-network \\ @@ -160,6 +160,7 @@ deploy_service() { -e MYSQL_PORT=3306 \\ -e MYSQL_DATABASE=emotion_museum \\ -e MYSQL_USERNAME=root \\ + -e MYSQL_PASSWORD='EmotionMuseum2025*#' \ -e REDIS_HOST=47.111.10.27 \\ -e REDIS_PORT=6379 \\ -e REDIS_PASSWORD= \\ @@ -176,24 +177,24 @@ deploy_service() { sleep 15 # 检查状态 - if ssh $REMOTE_HOST "docker ps | grep ${SERVICE_NAME}" > /dev/null; then + if ssh 'root@47.111.10.27' "docker ps | grep ${SERVICE_NAME}" > /dev/null; then log_success "服务启动成功" # 显示日志 log_info "服务日志 (最后20行):" - ssh $REMOTE_HOST "docker logs --tail 20 ${SERVICE_NAME}" + ssh 'root@47.111.10.27' "docker logs --tail 20 ${SERVICE_NAME}" # 健康检查 log_info "执行健康检查..." sleep 10 - if ssh $REMOTE_HOST "curl -f -s http://localhost:${SERVICE_PORT}/actuator/health" > /dev/null 2>&1; then + if ssh 'root@47.111.10.27' "curl -f -s http://localhost:${SERVICE_PORT}/actuator/health" > /dev/null 2>&1; then log_success "健康检查通过" else log_warning "健康检查失败,服务可能仍在启动中" fi else log_error "服务启动失败" - ssh $REMOTE_HOST "docker logs ${SERVICE_NAME}" + ssh 'root@47.111.10.27' "docker logs ${SERVICE_NAME}" exit 1 fi } diff --git a/backend/emotion-record/deploy.sh b/backend/emotion-record/deploy.sh index 92ee980..a897cb8 100755 --- a/backend/emotion-record/deploy.sh +++ b/backend/emotion-record/deploy.sh @@ -42,10 +42,10 @@ log_error() { # 检查远程服务器连接 check_remote_connection() { log_info "检查远程服务器连接..." - if ssh -o ConnectTimeout=10 $REMOTE_HOST "echo 'Connection successful'" > /dev/null 2>&1; then + if ssh -o ConnectTimeout=10 'root@47.111.10.27' "echo 'Connection successful'" > /dev/null 2>&1; then log_success "远程服务器连接正常" else - log_error "无法连接到远程服务器 $REMOTE_HOST" + log_error "无法连接到远程服务器 'root@47.111.10.27'" exit 1 fi } @@ -72,7 +72,7 @@ build_service() { create_dockerfile() { log_info "创建Dockerfile: $SERVICE_NAME" - ssh $REMOTE_HOST "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${SERVICE_NAME} << 'EOF' + ssh 'root@47.111.10.27' "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${SERVICE_NAME} << 'EOF' FROM openjdk:17-jre-slim WORKDIR /app @@ -107,7 +107,7 @@ deploy_service() { fi # 创建远程目录 - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " mkdir -p $REMOTE_BUILD_DIR mkdir -p $REMOTE_DOCKER_COMPOSE_DIR mkdir -p /data/logs/emotion-museum @@ -115,11 +115,11 @@ deploy_service() { # 删除旧jar包 log_info "删除远程旧jar包" - ssh $REMOTE_HOST "rm -f $REMOTE_BUILD_DIR/${SERVICE_NAME}-*.jar" + ssh 'root@47.111.10.27' "rm -f $REMOTE_BUILD_DIR/${SERVICE_NAME}-*.jar" # 上传新jar包 log_info "上传jar包" - if scp "$jar_file" "$REMOTE_HOST:$REMOTE_BUILD_DIR/${SERVICE_NAME}-1.0.0.jar"; then + if scp "$jar_file" 'root@47.111.10.27':$REMOTE_BUILD_DIR/${SERVICE_NAME}-1.0.0.jar"; then log_success "jar包上传成功" else log_error "jar包上传失败" @@ -131,25 +131,25 @@ deploy_service() { # 停止旧容器 log_info "停止旧容器" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker stop ${SERVICE_NAME} 2>/dev/null || true docker rm ${SERVICE_NAME} 2>/dev/null || true docker rmi ${PROJECT_NAME}/${SERVICE_NAME}:latest 2>/dev/null || true " # 创建Docker网络 - ssh $REMOTE_HOST "docker network create emotion-network 2>/dev/null || true" + ssh 'root@47.111.10.27' "docker network create emotion-network 2>/dev/null || true" # 构建镜像 log_info "构建Docker镜像" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " cd $REMOTE_DOCKER_COMPOSE_DIR docker build -t ${PROJECT_NAME}/${SERVICE_NAME}:latest -f Dockerfile.${SERVICE_NAME} . " # 启动容器 log_info "启动新容器" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker run -d \\ --name ${SERVICE_NAME} \\ --network emotion-network \\ @@ -160,6 +160,7 @@ deploy_service() { -e MYSQL_PORT=3306 \\ -e MYSQL_DATABASE=emotion_museum \\ -e MYSQL_USERNAME=root \\ + -e MYSQL_PASSWORD='EmotionMuseum2025*#' \ -e REDIS_HOST=47.111.10.27 \\ -e REDIS_PORT=6379 \\ -e REDIS_PASSWORD= \\ @@ -176,24 +177,24 @@ deploy_service() { sleep 15 # 检查状态 - if ssh $REMOTE_HOST "docker ps | grep ${SERVICE_NAME}" > /dev/null; then + if ssh 'root@47.111.10.27' "docker ps | grep ${SERVICE_NAME}" > /dev/null; then log_success "服务启动成功" # 显示日志 log_info "服务日志 (最后20行):" - ssh $REMOTE_HOST "docker logs --tail 20 ${SERVICE_NAME}" + ssh 'root@47.111.10.27' "docker logs --tail 20 ${SERVICE_NAME}" # 健康检查 log_info "执行健康检查..." sleep 10 - if ssh $REMOTE_HOST "curl -f -s http://localhost:${SERVICE_PORT}/actuator/health" > /dev/null 2>&1; then + if ssh 'root@47.111.10.27' "curl -f -s http://localhost:${SERVICE_PORT}/actuator/health" > /dev/null 2>&1; then log_success "健康检查通过" else log_warning "健康检查失败,服务可能仍在启动中" fi else log_error "服务启动失败" - ssh $REMOTE_HOST "docker logs ${SERVICE_NAME}" + ssh 'root@47.111.10.27' "docker logs ${SERVICE_NAME}" exit 1 fi } diff --git a/backend/emotion-user/deploy.sh b/backend/emotion-user/deploy.sh index 107d307..5e919d1 100755 --- a/backend/emotion-user/deploy.sh +++ b/backend/emotion-user/deploy.sh @@ -42,10 +42,10 @@ log_error() { # 检查远程服务器连接 check_remote_connection() { log_info "检查远程服务器连接..." - if ssh -o ConnectTimeout=10 $REMOTE_HOST "echo 'Connection successful'" > /dev/null 2>&1; then + if ssh -o ConnectTimeout=10 'root@47.111.10.27' "echo 'Connection successful'" > /dev/null 2>&1; then log_success "远程服务器连接正常" else - log_error "无法连接到远程服务器 $REMOTE_HOST" + log_error "无法连接到远程服务器 'root@47.111.10.27'" exit 1 fi } @@ -72,7 +72,7 @@ build_service() { create_dockerfile() { log_info "创建Dockerfile: $SERVICE_NAME" - ssh $REMOTE_HOST "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${SERVICE_NAME} << 'EOF' + ssh 'root@47.111.10.27' "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${SERVICE_NAME} << 'EOF' FROM openjdk:17-jre-slim WORKDIR /app @@ -107,7 +107,7 @@ deploy_service() { fi # 创建远程目录 - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " mkdir -p $REMOTE_BUILD_DIR mkdir -p $REMOTE_DOCKER_COMPOSE_DIR mkdir -p /data/logs/emotion-museum @@ -115,11 +115,11 @@ deploy_service() { # 删除旧jar包 log_info "删除远程旧jar包" - ssh $REMOTE_HOST "rm -f $REMOTE_BUILD_DIR/${SERVICE_NAME}-*.jar" + ssh 'root@47.111.10.27' "rm -f $REMOTE_BUILD_DIR/${SERVICE_NAME}-*.jar" # 上传新jar包 log_info "上传jar包" - if scp "$jar_file" "$REMOTE_HOST:$REMOTE_BUILD_DIR/${SERVICE_NAME}-1.0.0.jar"; then + if scp "$jar_file" 'root@47.111.10.27':$REMOTE_BUILD_DIR/${SERVICE_NAME}-1.0.0.jar"; then log_success "jar包上传成功" else log_error "jar包上传失败" @@ -131,25 +131,25 @@ deploy_service() { # 停止旧容器 log_info "停止旧容器" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker stop ${SERVICE_NAME} 2>/dev/null || true docker rm ${SERVICE_NAME} 2>/dev/null || true docker rmi ${PROJECT_NAME}/${SERVICE_NAME}:latest 2>/dev/null || true " # 创建Docker网络 - ssh $REMOTE_HOST "docker network create emotion-network 2>/dev/null || true" + ssh 'root@47.111.10.27' "docker network create emotion-network 2>/dev/null || true" # 构建镜像 log_info "构建Docker镜像" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " cd $REMOTE_DOCKER_COMPOSE_DIR docker build -t ${PROJECT_NAME}/${SERVICE_NAME}:latest -f Dockerfile.${SERVICE_NAME} . " # 启动容器 log_info "启动新容器" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker run -d \\ --name ${SERVICE_NAME} \\ --network emotion-network \\ @@ -160,6 +160,7 @@ deploy_service() { -e MYSQL_PORT=3306 \\ -e MYSQL_DATABASE=emotion_museum \\ -e MYSQL_USERNAME=root \\ + -e MYSQL_PASSWORD='EmotionMuseum2025*#' \ -e REDIS_HOST=47.111.10.27 \\ -e REDIS_PORT=6379 \\ -e REDIS_PASSWORD= \\ @@ -176,24 +177,24 @@ deploy_service() { sleep 15 # 检查状态 - if ssh $REMOTE_HOST "docker ps | grep ${SERVICE_NAME}" > /dev/null; then + if ssh 'root@47.111.10.27' "docker ps | grep ${SERVICE_NAME}" > /dev/null; then log_success "服务启动成功" # 显示日志 log_info "服务日志 (最后20行):" - ssh $REMOTE_HOST "docker logs --tail 20 ${SERVICE_NAME}" + ssh 'root@47.111.10.27' "docker logs --tail 20 ${SERVICE_NAME}" # 健康检查 log_info "执行健康检查..." sleep 10 - if ssh $REMOTE_HOST "curl -f -s http://localhost:${SERVICE_PORT}/actuator/health" > /dev/null 2>&1; then + if ssh 'root@47.111.10.27' "curl -f -s http://localhost:${SERVICE_PORT}/actuator/health" > /dev/null 2>&1; then log_success "健康检查通过" else log_warning "健康检查失败,服务可能仍在启动中" fi else log_error "服务启动失败" - ssh $REMOTE_HOST "docker logs ${SERVICE_NAME}" + ssh 'root@47.111.10.27' "docker logs ${SERVICE_NAME}" exit 1 fi } diff --git a/backend/emotion-websocket/deploy.sh b/backend/emotion-websocket/deploy.sh index ae7ecab..3f5dc52 100755 --- a/backend/emotion-websocket/deploy.sh +++ b/backend/emotion-websocket/deploy.sh @@ -42,10 +42,10 @@ log_error() { # 检查远程服务器连接 check_remote_connection() { log_info "检查远程服务器连接..." - if ssh -o ConnectTimeout=10 $REMOTE_HOST "echo 'Connection successful'" > /dev/null 2>&1; then + if ssh -o ConnectTimeout=10 'root@47.111.10.27' "echo 'Connection successful'" > /dev/null 2>&1; then log_success "远程服务器连接正常" else - log_error "无法连接到远程服务器 $REMOTE_HOST" + log_error "无法连接到远程服务器 'root@47.111.10.27'" exit 1 fi } @@ -72,7 +72,7 @@ build_service() { create_dockerfile() { log_info "创建Dockerfile: $SERVICE_NAME" - ssh $REMOTE_HOST "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${SERVICE_NAME} << 'EOF' + ssh 'root@47.111.10.27' "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${SERVICE_NAME} << 'EOF' FROM openjdk:17-jre-slim WORKDIR /app @@ -107,7 +107,7 @@ deploy_service() { fi # 创建远程目录 - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " mkdir -p $REMOTE_BUILD_DIR mkdir -p $REMOTE_DOCKER_COMPOSE_DIR mkdir -p /data/logs/emotion-museum @@ -115,11 +115,11 @@ deploy_service() { # 删除旧jar包 log_info "删除远程旧jar包" - ssh $REMOTE_HOST "rm -f $REMOTE_BUILD_DIR/${SERVICE_NAME}-*.jar" + ssh 'root@47.111.10.27' "rm -f $REMOTE_BUILD_DIR/${SERVICE_NAME}-*.jar" # 上传新jar包 log_info "上传jar包" - if scp "$jar_file" "$REMOTE_HOST:$REMOTE_BUILD_DIR/${SERVICE_NAME}-1.0.0.jar"; then + if scp "$jar_file" 'root@47.111.10.27':$REMOTE_BUILD_DIR/${SERVICE_NAME}-1.0.0.jar"; then log_success "jar包上传成功" else log_error "jar包上传失败" @@ -131,25 +131,25 @@ deploy_service() { # 停止旧容器 log_info "停止旧容器" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker stop ${SERVICE_NAME} 2>/dev/null || true docker rm ${SERVICE_NAME} 2>/dev/null || true docker rmi ${PROJECT_NAME}/${SERVICE_NAME}:latest 2>/dev/null || true " # 创建Docker网络 - ssh $REMOTE_HOST "docker network create emotion-network 2>/dev/null || true" + ssh 'root@47.111.10.27' "docker network create emotion-network 2>/dev/null || true" # 构建镜像 log_info "构建Docker镜像" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " cd $REMOTE_DOCKER_COMPOSE_DIR docker build -t ${PROJECT_NAME}/${SERVICE_NAME}:latest -f Dockerfile.${SERVICE_NAME} . " # 启动容器 log_info "启动新容器" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " docker run -d \\ --name ${SERVICE_NAME} \\ --network emotion-network \\ @@ -160,6 +160,7 @@ deploy_service() { -e MYSQL_PORT=3306 \\ -e MYSQL_DATABASE=emotion_museum \\ -e MYSQL_USERNAME=root \\ + -e MYSQL_PASSWORD='EmotionMuseum2025*#' \ -e REDIS_HOST=47.111.10.27 \\ -e REDIS_PORT=6379 \\ -e REDIS_PASSWORD= \\ @@ -176,24 +177,24 @@ deploy_service() { sleep 15 # 检查状态 - if ssh $REMOTE_HOST "docker ps | grep ${SERVICE_NAME}" > /dev/null; then + if ssh 'root@47.111.10.27' "docker ps | grep ${SERVICE_NAME}" > /dev/null; then log_success "服务启动成功" # 显示日志 log_info "服务日志 (最后20行):" - ssh $REMOTE_HOST "docker logs --tail 20 ${SERVICE_NAME}" + ssh 'root@47.111.10.27' "docker logs --tail 20 ${SERVICE_NAME}" # 健康检查 log_info "执行健康检查..." sleep 10 - if ssh $REMOTE_HOST "curl -f -s http://localhost:${SERVICE_PORT}/actuator/health" > /dev/null 2>&1; then + if ssh 'root@47.111.10.27' "curl -f -s http://localhost:${SERVICE_PORT}/actuator/health" > /dev/null 2>&1; then log_success "健康检查通过" else log_warning "健康检查失败,服务可能仍在启动中" fi else log_error "服务启动失败" - ssh $REMOTE_HOST "docker logs ${SERVICE_NAME}" + ssh 'root@47.111.10.27' "docker logs ${SERVICE_NAME}" exit 1 fi } diff --git a/web-flowith/deploy.sh b/web-flowith/deploy.sh index dc13034..5cd449e 100755 --- a/web-flowith/deploy.sh +++ b/web-flowith/deploy.sh @@ -8,7 +8,7 @@ set -e # 配置变量 - 支持Jenkins环境变量覆盖 -REMOTE_HOST="${DEPLOY_HOST:-root@47.111.10.27}" +REMOTE_HOST="${DEPLOY_HOST:-'root@47.111.10.27'}" REMOTE_WEB_DIR="${REMOTE_WEB_DIR:-/data/www/emotion-museum}" FRONTEND_DIR="web-flowith" PROJECT_NAME="emotion-museum-frontend" @@ -45,11 +45,11 @@ log_error() { # 检查远程服务器连接 check_remote_connection() { log_info "检查远程服务器连接..." - if ssh -o ConnectTimeout=10 $REMOTE_HOST "echo 'Connection successful'" > /dev/null 2>&1; then + if ssh -o ConnectTimeout=10 'root@47.111.10.27' "echo 'Connection successful'" > /dev/null 2>&1; then log_success "远程服务器连接正常" return 0 else - log_error "无法连接到远程服务器 $REMOTE_HOST" + log_error "无法连接到远程服务器 'root@47.111.10.27'" return 1 fi } @@ -120,7 +120,7 @@ build_frontend() { # 创建远程目录 create_remote_directories() { log_info "创建远程目录结构..." - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " mkdir -p $REMOTE_WEB_DIR mkdir -p $REMOTE_WEB_DIR/backup mkdir -p /data/logs/nginx @@ -134,11 +134,11 @@ backup_old_version() { local backup_name="backup_$(date +%Y%m%d_%H%M%S)" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " if [ -d '$REMOTE_WEB_DIR/$FRONTEND_DIR' ]; then mv '$REMOTE_WEB_DIR/$FRONTEND_DIR' '$REMOTE_WEB_DIR/backup/$backup_name' echo '旧版本已备份到: $REMOTE_WEB_DIR/backup/$backup_name' - + # 只保留最近5个备份 cd '$REMOTE_WEB_DIR/backup' ls -t | tail -n +6 | xargs -r rm -rf @@ -155,15 +155,15 @@ deploy_frontend() { log_info "部署前端文件到远程服务器..." # 上传构建产物 - if scp -r dist/ "$REMOTE_HOST:$REMOTE_WEB_DIR/$FRONTEND_DIR/"; then + if scp -r dist/ 'root@47.111.10.27':$REMOTE_WEB_DIR/$FRONTEND_DIR/; then log_success "前端文件上传成功" else log_error "前端文件上传失败" return 1 fi - + # 设置文件权限 - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " chown -R www-data:www-data '$REMOTE_WEB_DIR/$FRONTEND_DIR' 2>/dev/null || true chmod -R 755 '$REMOTE_WEB_DIR/$FRONTEND_DIR' " @@ -176,7 +176,7 @@ configure_nginx() { log_info "配置Nginx..." # 创建Nginx配置 - ssh $REMOTE_HOST "cat > /etc/nginx/sites-available/emotion-museum << 'EOF' + ssh 'root@47.111.10.27' "cat > /etc/nginx/sites-available/emotion-museum << 'EOF' server { listen 80; server_name 47.111.10.27; @@ -221,7 +221,7 @@ server { EOF" # 启用站点 - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " ln -sf /etc/nginx/sites-available/emotion-museum /etc/nginx/sites-enabled/ nginx -t && systemctl reload nginx " 2>/dev/null || log_warning "Nginx配置可能需要手动检查" @@ -277,7 +277,7 @@ show_deployment_report() { echo "" echo "📁 远程文件信息:" - ssh $REMOTE_HOST " + ssh 'root@47.111.10.27' " echo '部署目录大小:' du -sh '$REMOTE_WEB_DIR/$FRONTEND_DIR' 2>/dev/null || echo '无法获取目录大小' echo ''