deploy.sh 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #!/bin/bash
  2. # 设置远程服务器信息
  3. REMOTE_USER="root" # 远程服务器用户名,根据你的实际情况修改
  4. REMOTE_HOST="129.204.227.215" # 远程服务器地址
  5. REMOTE_BASE_DIR="/home/software/fhzx" # 远程服务器上的部署目录,根据你的目录结构修改
  6. # 本地 JAR 包路径 -- 根据你提供的目录结构修改
  7. LOCAL_FS_ADMIN_JAR="./fs-admin/target/fs-admin.jar" # 假设target目录和你提供的 tree 命令显示的目录同级
  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. # 函数:检查本地文件是否存在
  11. check_local_file() {
  12. if [ ! -f "$1" ]; then
  13. echo "Error: Local file $1 not found."
  14. exit 1
  15. fi
  16. }
  17. # 检查本地 JAR 文件是否存在
  18. check_local_file "$LOCAL_FS_ADMIN_JAR"
  19. check_local_file "$LOCAL_FS_COMPANY_JAR"
  20. check_local_file "$LOCAL_FS_USER_APP_JAR"
  21. # 停止远程服务器上可能正在运行的旧版本(假设进程名与 JAR 包名相同)
  22. stop_remote_app() {
  23. local app_name=$1
  24. local remote_dir=$2
  25. local full_path="$REMOTE_BASE_DIR/$remote_dir/$app_name.jar"
  26. echo "Stopping $app_name in $remote_dir..."
  27. # 获取运行该JAR包的进程ID
  28. local pid=$(ssh "$REMOTE_USER@$REMOTE_HOST" "ps -ef | grep '$full_path' | grep -v grep | awk '{print \$2}'")
  29. if [ -n "$pid" ]; then
  30. echo "Found process ID: $pid for $app_name, stopping it..."
  31. ssh "$REMOTE_USER@$REMOTE_HOST" "kill -15 $pid && sleep 3 && kill -9 $pid 2>/dev/null || true"
  32. echo "Process stopped."
  33. else
  34. echo "No running process found for $app_name."
  35. fi
  36. }
  37. # 部署单个 JAR 包
  38. deploy_jar() {
  39. local local_jar=$1
  40. local remote_dir=$2
  41. local app_name=$(basename "$local_jar" .jar)
  42. # 创建远程目录(如果不存在)
  43. ssh "$REMOTE_USER@$REMOTE_HOST" "mkdir -p $REMOTE_BASE_DIR/$remote_dir"
  44. # 停止旧版本
  45. stop_remote_app $app_name
  46. # 上传 JAR 包
  47. scp "$local_jar" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_BASE_DIR/$remote_dir/"
  48. # 在后台启动 JAR 包, 并将输出重定向到 /dev/null
  49. ssh "$REMOTE_USER@$REMOTE_HOST" "nohup java -jar -Dfile.encoding=UTF-8 $REMOTE_BASE_DIR/$remote_dir/$app_name.jar > $REMOTE_BASE_DIR/$remote_dir/$app_name.log 2>&1 &"
  50. echo "Deployed $app_name to $REMOTE_HOST:$REMOTE_BASE_DIR/$remote_dir"
  51. }
  52. # 主要部署流程
  53. # 部署 fs-admin
  54. deploy_jar "$LOCAL_FS_ADMIN_JAR" "fs-admin"
  55. # 部署 fs-company
  56. deploy_jar "$LOCAL_FS_COMPANY_JAR" "fs-company"
  57. # 部署 fs-user-app
  58. deploy_jar "$LOCAL_FS_USER_APP_JAR" "fs-user-app"
  59. echo "Deployment completed."