This commit is contained in:
beabigegg
2025-10-03 08:19:40 +08:00
commit 6599716481
99 changed files with 28184 additions and 0 deletions

281
install.sh Normal file
View File

@@ -0,0 +1,281 @@
#!/bin/bash
###############################################################################
# PANJIT Document Translator - 一鍵安裝腳本
# 用於 1Panel 環境部署
#
# 此腳本會:
# 1. 檢查 Python 版本
# 2. 安裝所有 Python 依賴套件
# 3. 建立必要目錄
# 4. 驗證關鍵配置
#
# Author: PANJIT IT Team
# Created: 2025-10-03
###############################################################################
set -e # 發生錯誤時立即退出
# 顏色定義
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 日誌函數
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 顯示橫幅
show_banner() {
echo ""
echo "╔═══════════════════════════════════════════════════════════╗"
echo "║ PANJIT Document Translator - 環境安裝腳本 ║"
echo "║ 適用於 1Panel 環境部署 ║"
echo "╚═══════════════════════════════════════════════════════════╝"
echo ""
}
# 檢查 Python 版本
check_python() {
log_info "檢查 Python 版本..."
if ! command -v python3 &> /dev/null; then
log_error "找不到 python3請先安裝 Python 3.10+"
exit 1
fi
PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}')
PYTHON_MAJOR=$(echo $PYTHON_VERSION | cut -d. -f1)
PYTHON_MINOR=$(echo $PYTHON_VERSION | cut -d. -f2)
if [ "$PYTHON_MAJOR" -lt 3 ] || ([ "$PYTHON_MAJOR" -eq 3 ] && [ "$PYTHON_MINOR" -lt 10 ]); then
log_error "Python 版本過低: $PYTHON_VERSION (需要 3.10+)"
exit 1
fi
log_success "Python 版本: $PYTHON_VERSION"
}
# 檢查 pip
check_pip() {
log_info "檢查 pip..."
if ! command -v pip3 &> /dev/null; then
log_error "找不到 pip3請先安裝 pip"
exit 1
fi
PIP_VERSION=$(pip3 --version | awk '{print $2}')
log_success "pip 版本: $PIP_VERSION"
}
# 升級 pip
upgrade_pip() {
log_info "升級 pip 到最新版本..."
pip3 install --upgrade pip --quiet
log_success "pip 升級完成 ✓"
}
# 安裝 Python 依賴
install_dependencies() {
log_info "安裝 Python 依賴套件..."
echo ""
if [ ! -f "requirements.txt" ]; then
log_error "找不到 requirements.txt 檔案"
exit 1
fi
# 顯示將要安裝的套件數量
PACKAGE_COUNT=$(grep -c "^[^#]" requirements.txt || true)
log_info "將安裝 $PACKAGE_COUNT 個套件(這可能需要幾分鐘)..."
echo ""
# 安裝依賴(使用清華鏡像加速)
if pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple 2>&1 | tee /tmp/pip_install.log; then
log_success "所有依賴套件安裝完成 ✓"
else
log_warning "使用清華鏡像安裝失敗,嘗試使用官方源..."
if pip3 install -r requirements.txt 2>&1 | tee /tmp/pip_install.log; then
log_success "所有依賴套件安裝完成 ✓"
else
log_error "依賴套件安裝失敗,請檢查 /tmp/pip_install.log"
exit 1
fi
fi
echo ""
}
# 建立必要目錄
create_directories() {
log_info "建立必要目錄..."
DIRECTORIES=(
"uploads"
"logs"
"static"
)
for dir in "${DIRECTORIES[@]}"; do
if [ ! -d "$dir" ]; then
mkdir -p "$dir"
log_success "建立目錄: $dir"
else
log_info "目錄已存在: $dir"
fi
done
# 設定目錄權限
chmod 755 uploads logs static
log_success "目錄權限設定完成 ✓"
echo ""
}
# 檢查環境變數檔案
check_env_file() {
log_info "檢查環境變數配置..."
if [ -f ".env" ]; then
log_success "找到 .env 檔案 ✓"
# 檢查關鍵配置項
REQUIRED_VARS=(
"DATABASE_URL"
"REDIS_URL"
"LDAP_SERVER"
"SMTP_SERVER"
)
MISSING_VARS=()
for var in "${REQUIRED_VARS[@]}"; do
if ! grep -q "^${var}=" .env; then
MISSING_VARS+=("$var")
fi
done
if [ ${#MISSING_VARS[@]} -gt 0 ]; then
log_warning "以下環境變數未設定:"
for var in "${MISSING_VARS[@]}"; do
echo " - $var"
done
else
log_success "關鍵環境變數已配置 ✓"
fi
else
log_warning "找不到 .env 檔案"
log_info "請參考 .env.example 建立 .env 檔案"
fi
echo ""
}
# 檢查 api.txt
check_api_file() {
log_info "檢查 Dify API 配置..."
if [ -f "api.txt" ]; then
log_success "找到 api.txt 檔案 ✓"
# 檢查必要配置
if grep -q "translation_api:" api.txt && grep -q "ocr_api:" api.txt; then
log_success "Dify API 配置完整 ✓"
else
log_warning "api.txt 配置可能不完整,請檢查"
fi
else
log_warning "找不到 api.txt 檔案Dify API 配置)"
log_info "如需翻譯功能,請建立 api.txt 並配置 API 金鑰"
fi
echo ""
}
# 驗證安裝
verify_installation() {
log_info "驗證安裝..."
# 檢查關鍵套件
CRITICAL_PACKAGES=(
"flask"
"celery"
"redis"
"pymysql"
"ldap3"
)
for package in "${CRITICAL_PACKAGES[@]}"; do
if python3 -c "import ${package}" 2>/dev/null; then
log_success "套件 ${package} 安裝成功 ✓"
else
log_error "套件 ${package} 安裝失敗"
exit 1
fi
done
echo ""
}
# 顯示後續步驟
show_next_steps() {
echo ""
echo "╔═══════════════════════════════════════════════════════════╗"
echo "║ 安裝完成!後續步驟: ║"
echo "╚═══════════════════════════════════════════════════════════╝"
echo ""
echo "1. 📝 修改環境變數中的安全金鑰:"
echo " nano .env"
echo " # 修改 SECRET_KEY 和 JWT_SECRET_KEY"
echo ""
echo "2. ✅ 確認 API 配置(已預設好):"
echo " cat api.txt"
echo ""
echo "3. 🚀 在 1Panel 介面設定:"
echo " 命令執行: python3 start.py"
echo " 端口映射: 12010"
echo ""
echo "4. ✅ 驗證服務:"
echo " curl http://localhost:12010/api/health"
echo ""
echo "📚 詳細說明請參考 README.md"
echo ""
}
# 主函數
main() {
show_banner
log_info "開始安裝環境..."
echo ""
# 執行檢查和安裝
check_python
check_pip
upgrade_pip
echo ""
install_dependencies
create_directories
check_env_file
check_api_file
verify_installation
log_success "========================================="
log_success " 所有安裝步驟完成!"
log_success "========================================="
show_next_steps
}
# 執行主函數
main