Files
Document_translator_1panel/install.sh
beabigegg 6599716481 1panel
2025-10-03 08:19:40 +08:00

282 lines
7.5 KiB
Bash
Raw 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.

#!/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