#!/bin/bash # 设置远程服务器信息 REMOTE_USER="administrator" # 远程服务器用户名 REMOTE_HOST="101.33.233.219" # 远程服务器地址 REMOTE_BASE_DIR="C:/Tools/jar" # 远程服务器上的部署目录(使用正斜杠) # 本地 JAR 包路径 LOCAL_FS_ADMIN_JAR="./fs-admin/target/fs-admin.jar" LOCAL_FS_COMPANY_JAR="./fs-company/target/fs-company.jar" LOCAL_FS_USER_APP_JAR="./fs-user-app/target/fs-user-app.jar" LOCAL_FS_API_APP_JAR="./fs-api/target/fs-api.jar" # 函数:检查本地文件是否存在 check_local_file() { if [ ! -f "$1" ]; then echo "Error: Local file $1 not found." exit 1 fi } # 检查本地 JAR 文件是否存在 check_local_file "$LOCAL_FS_ADMIN_JAR" check_local_file "$LOCAL_FS_COMPANY_JAR" check_local_file "$LOCAL_FS_USER_APP_JAR" #check_local_file "$LOCAL_FS_API_APP_JAR" # 停止远程服务器上可能正在运行的旧版本 stop_remote_app() { local app_name=$1 # 使用Windows PowerShell通过进程名终止进程 ssh "$REMOTE_USER@$REMOTE_HOST" "powershell -Command \"Get-Process -Name java -ErrorAction SilentlyContinue | Where-Object {\\\$_.CommandLine -like '*$app_name*'} | Stop-Process -Force\"" echo "Stopped any running instances of $app_name" } # 创建远程目录 create_remote_dir() { local remote_dir=$1 ssh "$REMOTE_USER@$REMOTE_HOST" "if not exist \"$REMOTE_BASE_DIR\\$remote_dir\" mkdir \"$REMOTE_BASE_DIR\\$remote_dir\"" } # 部署单个 JAR 包 deploy_jar() { local local_jar=$1 local remote_dir=$2 local port=$3 local profile=$4 local app_name=$(basename "$local_jar" .jar) echo "Deploying $app_name to $REMOTE_HOST:$REMOTE_BASE_DIR/$remote_dir" # 创建远程目录(如果不存在) create_remote_dir "$remote_dir" # 停止旧版本 stop_remote_app "$app_name" # 上传 JAR 包 scp "$local_jar" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_BASE_DIR/$remote_dir/" # 在Windows上使用start命令启动JAR(后台运行,不显示窗口) ssh "$REMOTE_USER@$REMOTE_HOST" "cd $REMOTE_BASE_DIR/$remote_dir && start \"$app_name\" /B cmd /c \"java -jar -Dfile.encoding=UTF-8 $app_name.jar --spring.profiles.active=$profile --server.port=$port > $app_name.log 2>&1\"" echo "Deployed $app_name to $REMOTE_HOST:$REMOTE_BASE_DIR/$remote_dir on port $port" } # 主要部署流程 # 部署 fs-admin deploy_jar "$LOCAL_FS_ADMIN_JAR" "fs-admin" "7011" "druid-yzt" # 取消注释以部署其他服务 # deploy_jar "$LOCAL_FS_COMPANY_JAR" "fs-company" "7012" "druid-yzt" # deploy_jar "$LOCAL_FS_USER_APP_JAR" "fs-user-app" "8808" "druid-yzt" # deploy_jar "$LOCAL_FS_API_APP_JAR" "fs-api" "8809" "druid-yzt" echo "Deployment completed."