startup.sh 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/bin/bash
  2. #
  3. # cfc-backend 启动脚本
  4. # 用法: ./startup.sh [dev|test|prod]
  5. # dev - 本地开发环境,使用 127.0.0.1 MySQL
  6. # test - 251 测试环境,使用 192.168.16.251 MySQL
  7. # prod - 251 生产环境,使用 192.168.16.251 MySQL
  8. #
  9. # 外部配置文件优先级高于 JAR 内置配置,
  10. # 通过 --spring.config.location 显式加载 config/ 目录下的环境配置。
  11. #
  12. set -e
  13. # ===== 配置 =====
  14. # PROFILE="${1:-prod}"
  15. PROFILE="${1:-dev}"
  16. JAR_NAME="cfc-backend-1.0.0.jar"
  17. CONFIG_DIR="$(cd "$(dirname "$0")" && pwd)/config"
  18. # JAR 路径:与 startup.sh 同目录
  19. APP_DIR="$(cd "$(dirname "$0")" && pwd)"
  20. JAR_FILE="$APP_DIR/$JAR_NAME"
  21. # 日志文件
  22. LOG_FILE="$APP_DIR/logs/cfc-backend.log"
  23. # ===== 验证 =====
  24. if [[ ! -f "$JAR_FILE" ]]; then
  25. echo "ERROR: JAR 文件不存在: $JAR_FILE"
  26. exit 1
  27. fi
  28. if [[ ! -d "$CONFIG_DIR" ]]; then
  29. echo "ERROR: 配置目录不存在: $CONFIG_DIR"
  30. exit 1
  31. fi
  32. CONFIG_FILE="$CONFIG_DIR/application-$PROFILE.yml"
  33. if [[ ! -f "$CONFIG_FILE" ]]; then
  34. echo "ERROR: 配置文件不存在: $CONFIG_FILE"
  35. echo "可用环境: dev | test | prod"
  36. exit 1
  37. fi
  38. # ===== 日志目录 =====
  39. mkdir -p "$APP_DIR/logs"
  40. # ===== 启动 =====
  41. echo "========================================"
  42. echo " CFC Backend 启动"
  43. echo " 环境: $PROFILE"
  44. echo " 配置文件: $CONFIG_FILE"
  45. echo " JAR: $JAR_FILE"
  46. echo " 日志: $LOG_FILE"
  47. echo "========================================"
  48. # spring.config.location 末尾的 / 非常重要:表示作为目录搜索,
  49. # Spring Boot 会同时加载 application.yml 和 application-{profile}.yml。
  50. # 外部文件覆盖 JAR 内置文件,相同属性以外部文件为准。
  51. # TLS: 强制出站 HTTPS 使用 TLSv1.2 —— Tencent 微信/支付边缘会终止 TLSv1.3 握手(Remote host terminated the handshake)
  52. exec java -Dhttps.protocols=TLSv1.2 -Djdk.tls.client.protocols=TLSv1.2 -jar "$JAR_FILE" \
  53. --spring.profiles.active="$PROFILE" \
  54. --spring.config.location="$CONFIG_DIR/" \
  55. >> "$LOG_FILE" 2>&1