deploy.sh 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #!/bin/bash
  2. # 设置远程服务器信息
  3. REMOTE_USER="administrator" # 远程服务器用户名
  4. REMOTE_HOST="101.33.233.219" # 远程服务器地址
  5. REMOTE_BASE_DIR="C:/Tools/jar" # 远程服务器上的部署目录(使用正斜杠)
  6. # 本地 JAR 包路径
  7. LOCAL_FS_ADMIN_JAR="./fs-admin/target/fs-admin.jar"
  8. LOCAL_FS_COMPANY_JAR="./fs-company/target/fs-company.jar"
  9. LOCAL_FS_USER_APP_JAR="./fs-user-app/target/fs-user-app.jar"
  10. LOCAL_FS_API_APP_JAR="./fs-api/target/fs-api.jar"
  11. # 函数:检查本地文件是否存在
  12. check_local_file() {
  13. if [ ! -f "$1" ]; then
  14. echo "Error: Local file $1 not found."
  15. exit 1
  16. fi
  17. }
  18. # 检查本地 JAR 文件是否存在
  19. check_local_file "$LOCAL_FS_ADMIN_JAR"
  20. check_local_file "$LOCAL_FS_COMPANY_JAR"
  21. check_local_file "$LOCAL_FS_USER_APP_JAR"
  22. #check_local_file "$LOCAL_FS_API_APP_JAR"
  23. # 停止远程服务器上可能正在运行的旧版本
  24. stop_remote_app() {
  25. local app_name=$1
  26. # 使用Windows PowerShell通过进程名终止进程
  27. ssh "$REMOTE_USER@$REMOTE_HOST" "powershell -Command \"Get-Process -Name java -ErrorAction SilentlyContinue | Where-Object {\\\$_.CommandLine -like '*$app_name*'} | Stop-Process -Force\""
  28. echo "Stopped any running instances of $app_name"
  29. }
  30. # 创建远程目录
  31. create_remote_dir() {
  32. local remote_dir=$1
  33. ssh "$REMOTE_USER@$REMOTE_HOST" "if not exist \"$REMOTE_BASE_DIR\\$remote_dir\" mkdir \"$REMOTE_BASE_DIR\\$remote_dir\""
  34. }
  35. # 部署单个 JAR 包
  36. deploy_jar() {
  37. local local_jar=$1
  38. local remote_dir=$2
  39. local port=$3
  40. local profile=$4
  41. local app_name=$(basename "$local_jar" .jar)
  42. echo "Deploying $app_name to $REMOTE_HOST:$REMOTE_BASE_DIR/$remote_dir"
  43. # 创建远程目录(如果不存在)
  44. create_remote_dir "$remote_dir"
  45. # 停止旧版本
  46. stop_remote_app "$app_name"
  47. # 上传 JAR 包
  48. scp "$local_jar" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_BASE_DIR/$remote_dir/"
  49. # 在Windows上使用start命令启动JAR(后台运行,不显示窗口)
  50. 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\""
  51. echo "Deployed $app_name to $REMOTE_HOST:$REMOTE_BASE_DIR/$remote_dir on port $port"
  52. }
  53. # 主要部署流程
  54. # 部署 fs-admin
  55. deploy_jar "$LOCAL_FS_ADMIN_JAR" "fs-admin" "7011" "druid-yzt"
  56. # 取消注释以部署其他服务
  57. # deploy_jar "$LOCAL_FS_COMPANY_JAR" "fs-company" "7012" "druid-yzt"
  58. # deploy_jar "$LOCAL_FS_USER_APP_JAR" "fs-user-app" "8808" "druid-yzt"
  59. # deploy_jar "$LOCAL_FS_API_APP_JAR" "fs-api" "8809" "druid-yzt"
  60. echo "Deployment completed."