從 Docker/macOS+Conda 部署遷移到 WSL2 Ubuntu 原生開發環境 主要變更: - 移除所有 Docker 相關配置檔案 (Dockerfile, docker-compose.yml, .dockerignore 等) - 移除 macOS/Conda 設置腳本 (SETUP.md, setup_conda.sh) - 新增 WSL Ubuntu 自動化環境設置腳本 (setup_dev_env.sh) - 新增後端/前端快速啟動腳本 (start_backend.sh, start_frontend.sh) - 統一開發端口配置 (backend: 8000, frontend: 5173) - 改進資料庫連接穩定性(連接池、超時設置、重試機制) - 更新專案文檔以反映當前 WSL 開發環境 Technical improvements: - Database connection pooling with health checks and auto-reconnection - Retry logic for long-running OCR tasks to prevent DB timeouts - Extended JWT token expiration to 24 hours - Support for Office documents (pptx, docx) via LibreOffice headless - Comprehensive system dependency installation in single script Environment: - OS: WSL2 Ubuntu 24.04 - Python: 3.12 (venv) - Node.js: 24.x LTS (nvm) - Backend Port: 8000 - Frontend Port: 5173 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
166 lines
3.9 KiB
Bash
Executable File
166 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Tool_OCR WSL Ubuntu 開發環境設置腳本
|
|
|
|
set -e # 遇到錯誤時停止
|
|
|
|
echo "================================"
|
|
echo "Tool_OCR 開發環境設置"
|
|
echo "================================"
|
|
echo ""
|
|
|
|
# 顏色定義
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 檢查是否為 root
|
|
if [ "$EUID" -eq 0 ]; then
|
|
echo -e "${RED}請不要使用 sudo 運行此腳本${NC}"
|
|
echo "腳本會在需要時提示輸入 sudo 密碼"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${YELLOW}[1/8] 更新系統套件列表...${NC}"
|
|
sudo apt update
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}[2/8] 安裝 Python 開發工具...${NC}"
|
|
sudo apt install -y \
|
|
python3-pip \
|
|
python3-venv \
|
|
python3-dev \
|
|
build-essential \
|
|
pkg-config
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}[3/8] 安裝系統層級依賴...${NC}"
|
|
sudo apt install -y \
|
|
pandoc \
|
|
libmagic1 \
|
|
libmagic-dev \
|
|
fonts-noto-cjk \
|
|
fonts-noto-cjk-extra \
|
|
fonts-liberation \
|
|
libpango-1.0-0 \
|
|
libpangocairo-1.0-0 \
|
|
libcairo2 \
|
|
libcairo2-dev \
|
|
libgdk-pixbuf2.0-0 \
|
|
libgdk-pixbuf-2.0-dev \
|
|
libffi-dev \
|
|
libffi8 \
|
|
shared-mime-info \
|
|
poppler-utils \
|
|
libgl1 \
|
|
libglib2.0-0 \
|
|
libglib2.0-dev \
|
|
libgomp1 \
|
|
libjpeg-dev \
|
|
libpng-dev \
|
|
libtiff-dev \
|
|
libopencv-dev \
|
|
libsqlite3-dev \
|
|
libreoffice-core-nogui \
|
|
libreoffice-writer-nogui \
|
|
libreoffice-impress-nogui \
|
|
ca-certificates \
|
|
curl \
|
|
wget \
|
|
libxml2 \
|
|
libxslt1-dev \
|
|
python3-cffi
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}[4/8] 安裝 Node.js 和 npm...${NC}"
|
|
# 檢查是否已安裝 nvm
|
|
if [ ! -d "$HOME/.nvm" ]; then
|
|
echo "安裝 nvm..."
|
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
|
|
|
|
# 載入 nvm
|
|
export NVM_DIR="$HOME/.nvm"
|
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
else
|
|
echo "nvm 已安裝"
|
|
export NVM_DIR="$HOME/.nvm"
|
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
fi
|
|
|
|
# 安裝 Node.js LTS
|
|
echo "安裝 Node.js LTS..."
|
|
nvm install --lts
|
|
nvm use --lts
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}[5/8] 創建 Python 虛擬環境...${NC}"
|
|
if [ ! -d "venv" ]; then
|
|
python3 -m venv venv
|
|
echo "虛擬環境已創建"
|
|
else
|
|
echo "虛擬環境已存在"
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}[6/8] 安裝 Python 依賴...${NC}"
|
|
source venv/bin/activate
|
|
pip install --upgrade pip setuptools wheel
|
|
pip install -r requirements.txt
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}測試關鍵套件...${NC}"
|
|
python -c "import magic; print('✓ python-magic')" || echo "✗ python-magic failed"
|
|
python -c "from weasyprint import HTML; print('✓ WeasyPrint')" || echo "✗ WeasyPrint failed"
|
|
python -c "import cv2; print('✓ OpenCV')" || echo "✗ OpenCV failed"
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}[7/8] 安裝前端依賴...${NC}"
|
|
cd frontend
|
|
|
|
# 清理可能存在的鎖定文件
|
|
if [ -d "node_modules" ]; then
|
|
echo "清理現有 node_modules..."
|
|
rm -rf node_modules package-lock.json
|
|
fi
|
|
|
|
# 清理 npm 緩存
|
|
npm cache clean --force
|
|
|
|
# 安裝依賴(使用 --force 避免鎖定問題)
|
|
echo "安裝前端依賴..."
|
|
npm install --force
|
|
|
|
cd ..
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}[8/8] 創建必要的目錄...${NC}"
|
|
mkdir -p backend/uploads/{temp,processed,images}
|
|
mkdir -p backend/storage/{markdown,json,exports}
|
|
mkdir -p backend/models/paddleocr
|
|
mkdir -p backend/logs
|
|
|
|
echo ""
|
|
echo -e "${GREEN}================================${NC}"
|
|
echo -e "${GREEN}環境設置完成!${NC}"
|
|
echo -e "${GREEN}================================${NC}"
|
|
echo ""
|
|
echo "下一步操作:"
|
|
echo "1. 初始化數據庫:"
|
|
echo " source venv/bin/activate"
|
|
echo " cd backend"
|
|
echo " alembic upgrade head"
|
|
echo " python create_test_user.py"
|
|
echo " cd .."
|
|
echo ""
|
|
echo "2. 啟動後端:"
|
|
echo " ./start_backend.sh"
|
|
echo ""
|
|
echo "3. 啟動前端 (新終端):"
|
|
echo " ./start_frontend.sh"
|
|
echo ""
|
|
echo "4. 訪問應用:"
|
|
echo " 前端: http://localhost:5173"
|
|
echo " API文檔: http://localhost:8000/docs"
|
|
echo " 健康檢查: http://localhost:8000/health"
|
|
echo ""
|