跳至主要内容

測試環境部署

本文檔說明如何部署花店管理系統到測試環境(Staging)。

環境資訊

項目
前端 URLhttps://florist-staging.leandev.io
API URLhttps://api-staging.florist.leandev.io
資料庫PostgreSQL(測試環境專用)

部署流程

1. 建置應用程式

# 建置前端
cd app-web
npm run build

# 建置後端
cd ../app-server
./gradlew clean build

# 建置統一部署 WAR
cd ../app-web-host
./gradlew clean deployBuild

2. 部署到測試環境

# 部署 WAR 到 Tomcat
scp build/libs/app-web-host.war user@staging-server:/opt/tomcat/webapps/ROOT.war

# 重啟 Tomcat
ssh user@staging-server "sudo systemctl restart tomcat"

3. 驗證部署

# 健康檢查
curl https://api-staging.florist.leandev.io/actuator/health

# 前端頁面
curl -I https://florist-staging.leandev.io

CI/CD 整合

GitHub Actions

# .github/workflows/deploy-staging.yml
name: Deploy to Staging

on:
push:
branches: [develop]

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Java
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Build Frontend
run: |
cd app-web
npm ci
npm run build

- name: Build WAR
run: |
cd app-web-host
./gradlew clean deployBuild

- name: Deploy
run: |
# 部署腳本
./scripts/deploy-staging.sh

環境變數

測試環境需要配置以下環境變數:

# 資料庫
SPRING_DATASOURCE_URL=jdbc:postgresql://db-staging:5432/florist
SPRING_DATASOURCE_USERNAME=florist
SPRING_DATASOURCE_PASSWORD=<password>

# 應用程式
APP_BASE_HREF=/
SPRING_PROFILES_ACTIVE=staging

# 日誌
LOGGING_LEVEL_ROOT=INFO
LOGGING_LEVEL_IO_LEANDEV=DEBUG

測試資料

測試環境使用獨立的測試資料:

  • 每次部署自動重置測試資料
  • 不與生產環境共用資料
  • 可隨時重建資料庫

重置測試資料

# 重建資料庫
./gradlew flywayClean flywayMigrate

# 載入測試資料
./gradlew loadTestData

監控

健康檢查端點

# 應用程式健康狀態
curl https://api-staging.florist.leandev.io/actuator/health

# 詳細資訊
curl https://api-staging.florist.leandev.io/actuator/info

日誌查看

# 即時日誌
ssh user@staging-server "tail -f /opt/tomcat/logs/catalina.out"

常見問題

部署後 404

  1. 確認 WAR 檔案已正確部署
  2. 檢查 Tomcat 日誌
  3. 驗證應用程式啟動成功

資料庫連線失敗

  1. 確認資料庫服務正常
  2. 檢查連線字串和憑證
  3. 確認防火牆設定

下一步