測試環境部署
本文檔說明如何部署花店管理系統到測試環境(Staging)。
環境資訊
| 項目 | 值 |
|---|---|
| 前端 URL | https://florist-staging.leandev.io |
| API URL | https://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
- 確認 WAR 檔案已正確部署
- 檢查 Tomcat 日誌
- 驗證應用程式啟動成功
資料庫連線失敗
- 確認資料庫服務正常
- 檢查連線字串和憑證
- 確認防火牆設定