Files
ai-scoring-application/COMPLETE_ENV_CONFIG_GUIDE.md

5.6 KiB
Raw Blame History

完整環境變量配置指南

概述

現在所有重要的配置都已經整合到環境變量中,包括:

  • 應用配置URL、名稱
  • 資料庫配置(主機、端口、用戶名、密碼、資料庫名)
  • AI 配置Gemini API Key、模型名稱、最大 Token 數)

環境變量列表

🌐 應用配置

NEXT_PUBLIC_APP_URL=http://localhost:12024
NEXT_PUBLIC_APP_NAME=AI 智能評審系統

🗄️ 資料庫配置

DB_HOST=mysql.theaken.com
DB_PORT=33306
DB_NAME=db_AI_scoring
DB_USER=root
DB_PASSWORD=zh6161168

🤖 AI 配置

GEMINI_API_KEY=AIzaSyAN3pEJr_Vn2xkCidGZAq9eQqsMVvpj8g4
GEMINI_MODEL=gemini-1.5-pro
GEMINI_MAX_TOKENS=8192

完整的 .env.local 範例

# 應用配置
NEXT_PUBLIC_APP_URL=http://localhost:12024
NEXT_PUBLIC_APP_NAME=AI 智能評審系統

# 資料庫配置
DB_HOST=mysql.theaken.com
DB_PORT=33306
DB_NAME=db_AI_scoring
DB_USER=root
DB_PASSWORD=zh6161168

# AI 配置
GEMINI_API_KEY=AIzaSyAN3pEJr_Vn2xkCidGZAq9eQqsMVvpj8g4
GEMINI_MODEL=gemini-1.5-pro
GEMINI_MAX_TOKENS=8192

技術實現

🔧 配置工具類 (lib/config.ts)

// 資料庫配置
export const dbConfig = {
  host: process.env.DB_HOST || 'mysql.theaken.com',
  port: parseInt(process.env.DB_PORT || '33306'),
  user: process.env.DB_USER || 'root',
  password: process.env.DB_PASSWORD || 'zh6161168',
  database: process.env.DB_NAME || 'db_AI_scoring',
  // ... 其他配置
}

// AI 配置
export const aiConfig = {
  geminiApiKey: process.env.GEMINI_API_KEY || 'fallback_key',
  modelName: process.env.GEMINI_MODEL || 'gemini-1.5-pro',
  maxTokens: parseInt(process.env.GEMINI_MAX_TOKENS || '8192'),
}

// 配置驗證
export function validateConfig(): { isValid: boolean; errors: string[] }

📊 資料庫配置更新 (lib/database.ts)

import { dbConfig } from './config';

// 直接使用配置對象
const pool = mysql.createPool({
  ...dbConfig,
  // ... 其他配置
});

🤖 AI 配置更新 (lib/services/gemini.ts)

import { aiConfig } from '../config';

const genAI = new GoogleGenerativeAI(aiConfig.geminiApiKey);

使用方式

🚀 開發環境設置

  1. 複製環境變量範例

    cp env.example .env.local
    
  2. 編輯配置

    # 編輯 .env.local 文件
    nano .env.local
    
  3. 重啟服務器

    npm run dev
    

🌐 生產環境設置

在部署平台(如 Vercel、Netlify 等)設置環境變量:

# 應用配置
NEXT_PUBLIC_APP_URL=https://yourdomain.com
NEXT_PUBLIC_APP_NAME=AI 智能評審系統

# 資料庫配置
DB_HOST=your-production-db-host
DB_PORT=3306
DB_NAME=your_production_db
DB_USER=your_db_user
DB_PASSWORD=your_secure_password

# AI 配置
GEMINI_API_KEY=your_production_gemini_key
GEMINI_MODEL=gemini-1.5-pro
GEMINI_MAX_TOKENS=8192

配置檢查工具

🔍 使用配置檢查腳本

node scripts/check-config.js

這個腳本會:

  • 顯示當前配置
  • 驗證必要的環境變量
  • 提供配置建議

📋 檢查結果範例

🔍 檢查環境變量配置...

📋 當前配置:
  應用 URL: http://localhost:12024
  應用名稱: AI 智能評審系統
  資料庫主機: mysql.theaken.com
  資料庫名稱: db_AI_scoring
  Gemini 模型: gemini-1.5-pro
  最大 Token 數: 8192

✅ 所有必要的環境變量都已設置

不同環境的配置範例

🏠 本地開發環境

NEXT_PUBLIC_APP_URL=http://localhost:12024
DB_HOST=localhost
DB_PORT=3306
DB_NAME=ai_scoring_dev

🧪 測試環境

NEXT_PUBLIC_APP_URL=https://test.yourdomain.com
DB_HOST=test-db.yourdomain.com
DB_PORT=3306
DB_NAME=ai_scoring_test

🚀 生產環境

NEXT_PUBLIC_APP_URL=https://yourdomain.com
DB_HOST=prod-db.yourdomain.com
DB_PORT=3306
DB_NAME=ai_scoring_prod

安全注意事項

🔒 敏感信息保護

  1. API 密鑰

    • 不要將真實的 API 密鑰提交到版本控制
    • 在生產環境中使用不同的 API 密鑰
  2. 資料庫密碼

    • 使用強密碼
    • 定期更換密碼
    • 限制資料庫訪問權限
  3. 環境變量文件

    • .env.local 已在 .gitignore
    • 不要在代碼中硬編碼敏感信息

⚠️ 重要提醒

  1. 環境變量命名

    • 客戶端變量必須以 NEXT_PUBLIC_ 開頭
    • 變量名稱區分大小寫
  2. 回退機制

    • 所有配置都有合理的默認值
    • 確保在環境變量未設置時仍能運行
  3. 配置驗證

    • 使用 validateConfig() 檢查配置
    • 在應用啟動時驗證關鍵配置

故障排除

🐛 常見問題

  1. 資料庫連接失敗

    # 檢查資料庫配置
    echo $DB_HOST
    echo $DB_NAME
    echo $DB_USER
    
  2. Gemini API 錯誤

    # 檢查 API 密鑰
    echo $GEMINI_API_KEY
    
  3. 分享連結錯誤

    # 檢查應用 URL
    echo $NEXT_PUBLIC_APP_URL
    

🔧 解決步驟

  1. 確認環境變量設置

    # 檢查 .env.local 文件
    cat .env.local
    
  2. 重啟服務器

    npm run dev
    
  3. 運行配置檢查

    node scripts/check-config.js
    

結論

通過完整的環境變量配置,應用現在具備了:

  • 靈活性:支援多環境部署
  • 安全性:敏感信息通過環境變量管理
  • 可維護性:統一的配置管理
  • 穩定性:回退機制確保正常運行
  • 可驗證性:配置檢查工具

現在您可以輕鬆地在不同環境中部署應用,只需設置相應的環境變量即可!