Files
TODO_list_system/DEPLOYMENT.md
2025-09-03 18:08:40 +08:00

279 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TODO管理系統 - 生產環境部署指南
## 📋 概述
本文件提供TODO管理系統的完整生產環境部署指南包含所有必要的配置和步驟。
## 🏗️ 系統架構
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 前端 (Next.js) │ │ 後端 (Flask) │ │ MySQL DB │
│ Port: 12012 │◄───┤ Port: 12011 │◄───┤ theaken.com │
│ Docker容器 │ │ Docker容器 │ │ Port: 33306 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
┌─────────────────┐
│ LDAP/AD │
│ panjit.com.tw │
│ Port: 389 │
└─────────────────┘
```
## 🚀 快速部署
### Windows 環境
```batch
# 1. 克隆專案(如果尚未克隆)
git clone <repository-url>
cd TODOLIST
# 2. 執行部署腳本
deploy.bat
```
### Linux/Mac 環境
```bash
# 1. 克隆專案(如果尚未克隆)
git clone <repository-url>
cd TODOLIST
# 2. 設置執行權限並執行部署腳本
chmod +x deploy.sh
./deploy.sh
```
## 📁 部署文件結構
```
TODOLIST/
├── backend/ # 後端代碼
│ ├── Dockerfile # 後端Docker構建文件
│ ├── requirements.txt # Python依賴
│ └── ...
├── frontend/ # 前端代碼
│ ├── Dockerfile # 前端Docker構建文件
│ ├── package.json # Node.js依賴
│ └── ...
├── docker-compose.prod.yml # 生產環境Docker Compose配置
├── .env.production # 生產環境變量配置
├── deploy.bat # Windows部署腳本
├── deploy.sh # Linux/Mac部署腳本
└── DEPLOYMENT.md # 部署說明文件
```
## 🔧 環境配置
### 生產環境變量 (`.env.production`)
本系統使用以下生產環境配置:
#### 🗄️ 資料庫配置
- **MySQL主機**: `mysql.theaken.com:33306`
- **資料庫**: `db_A060`
- **用戶**: `A060`
#### 🔐 LDAP認證配置
- **LDAP服務器**: `panjit.com.tw:389`
- **搜索基礎**: `OU=PANJIT,DC=panjit,DC=com,DC=tw`
- **認證方式**: Active Directory集成
#### 📧 郵件服務配置
- **SMTP服務器**: `mail.panjit.com.tw:25`
- **發送者**: `todo-system@panjit.com.tw`
#### 🌐 服務端口
- **前端**: `12012`
- **後端API**: `12011`
## 🐳 Docker配置
### 服務組成
1. **todo-backend-prod**: Flask後端容器
- 端口映射: `12011:12011`
- 健康檢查: `/api/health`
- 自動重啟: `unless-stopped`
2. **todo-frontend-prod**: Next.js前端容器
- 端口映射: `12012:12012`
- 健康檢查: 根路徑檢查
- 自動重啟: `unless-stopped`
### 網路配置
- 使用自定義橋接網路 `todolist-network`
- 容器間可通過服務名稱通信
- 外部訪問通過端口映射
## 🔍 手動部署步驟
如果需要手動部署,請按以下步驟執行:
### 1. 停止現有服務
```bash
# 停止並移除現有容器
docker stop todo-backend-prod todo-frontend-prod
docker rm todo-backend-prod todo-frontend-prod
```
### 2. 建置Docker鏡像
```bash
# 建置後端鏡像
docker build -t todolist-backend:latest ./backend
# 建置前端鏡像
docker build -t todo-frontend:latest \
--build-arg NEXT_PUBLIC_API_URL=http://localhost:12011 \
./frontend
```
### 3. 啟動服務
```bash
# 使用Docker Compose啟動
docker-compose -f docker-compose.prod.yml up -d
```
### 4. 驗證部署
```bash
# 檢查容器狀態
docker ps
# 檢查服務健康
curl http://localhost:12011/api/health
curl http://localhost:12012
```
## 🧪 測試與驗證
### API測試
```bash
# 健康檢查
curl http://localhost:12011/api/health
# CORS測試
curl -H "Origin: http://localhost:12012" \
-H "Access-Control-Request-Method: POST" \
-H "Access-Control-Request-Headers: Content-Type,Authorization" \
-X OPTIONS http://localhost:12011/api/auth/login
```
## 🛠️ 維護指令
### 日誌查看
```bash
# 查看所有服務日誌
docker-compose -f docker-compose.prod.yml logs -f
# 查看特定服務日誌
docker logs todo-backend-prod -f
docker logs todo-frontend-prod -f
```
### 服務管理
```bash
# 重啟服務
docker-compose -f docker-compose.prod.yml restart
# 停止服務
docker-compose -f docker-compose.prod.yml down
# 更新並重啟
docker-compose -f docker-compose.prod.yml down
docker-compose -f docker-compose.prod.yml up -d --build
```
### 資源監控
```bash
# 查看容器狀態
docker ps
# 查看資源使用
docker stats
# 查看容器詳情
docker inspect todo-backend-prod
docker inspect todo-frontend-prod
```
## 🚨 故障排除
### 常見問題
#### 1. 容器無法啟動
```bash
# 檢查日誌
docker logs todo-backend-prod
docker logs todo-frontend-prod
# 檢查端口占用
netstat -ano | findstr :12011
netstat -ano | findstr :12012
```
#### 2. 資料庫連接失敗
- 確認網路連通性到 `mysql.theaken.com:33306`
- 驗證資料庫憑證
- 檢查防火牆設置
#### 3. LDAP認證失敗
- 確認網路連通性到 `panjit.com.tw:389`
- 驗證LDAP服務帳號憑證
- 檢查搜索基礎設置
#### 4. CORS錯誤
- 確認前後端URL配置
- 檢查 `CORS_ORIGINS` 環境變量
- 驗證前端請求標頭
### 健康檢查端點
- **後端健康檢查**: `GET http://localhost:12011/api/health`
- **前端健康檢查**: `GET http://localhost:12012`
## 🔒 安全考量
### 生產環境安全設置
1. **更改默認密鑰**
- 修改 `SECRET_KEY``JWT_SECRET_KEY`
- 使用強密碼策略
2. **網路安全**
- 考慮使用反向代理Nginx
- 配置HTTPS證書
- 限制外部訪問
3. **監控與日誌**
- 設置日誌輪轉
- 監控系統資源
- 設置告警機制
## 📞 支援聯繫
- **系統管理員**: `ymirliu@panjit.com.tw`
- **技術支援**: 參考專案文檔或聯繫開發團隊
## 📝 版本資訊
- **系統版本**: 1.0.0
- **Docker映像**:
- Backend: `todolist-backend:latest`
- Frontend: `todo-frontend:latest`
- **部署日期**: 自動生成
---
**注意**: 本文件包含敏感配置資訊,請妥善保管,僅限授權人員查看。