添加Linux下安装环境和运行的脚本

Signed-off-by: Chen Xiao <abigwc@gmail.com>
This commit is contained in:
Chen Xiao
2026-05-12 10:06:31 +08:00
parent 45e18b4d47
commit 2d3c528c1c
2 changed files with 125 additions and 0 deletions
+79
View File
@@ -0,0 +1,79 @@
#!/bin/bash
# ==========================================
# To_Docx Debian 启动脚本 (run_dev.sh)
# 用于在 Debian 13 环境下一键启动前后端
# ==========================================
# 获取脚本所在的绝对路径
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
CONDA_ENV="to_docx"
echo "------------------------------------------"
echo "🚀 正在启动 To_Docx 开发环境..."
echo "项目根目录: $ROOT_DIR"
echo "------------------------------------------"
# 1. 基础环境检查
if ! command -v conda &> /dev/null; then
echo "❌ 错误: 未检测到 conda 命令,请先安装 Miniconda 或 Anaconda。"
exit 1
fi
if ! command -v node &> /dev/null; then
echo "❌ 错误: 未检测到 node 命令,请先安装 Node.js。"
exit 1
fi
# 2. 检查并提示 Conda 环境
if ! conda info --envs | grep -q "$CONDA_ENV"; then
echo "⚠️ 警告: 未找到 Conda 环境 '$CONDA_ENV'。"
echo "提示: 请按照以下步骤搭建环境:"
echo " 1. conda create -n $CONDA_ENV python=3.10 -y"
echo " 2. conda activate $CONDA_ENV"
echo " 3. pip install fastapi uvicorn pypandoc python-docx pydantic \"python-jose[cryptography]\" \"passlib[bcrypt]\" bcrypt"
exit 1
fi
# 3. 定义清理函数 (处理 Ctrl+C)
cleanup() {
echo ""
echo "🛑 正在停止所有服务..."
[ -n "$BACKEND_PID" ] && kill $BACKEND_PID 2>/dev/null
[ -n "$FRONTEND_PID" ] && kill $FRONTEND_PID 2>/dev/null
echo "✅ 服务已关闭。"
exit 0
}
# 捕获中断信号
trap cleanup SIGINT
# 4. 启动后端 (FastAPI)
echo "[1/2] 正在启动后端服务器 (端口: 3001)..."
# 使用 conda run 确保在正确的环境下执行,无需手动 activate
conda run --no-capture-output -n $CONDA_ENV python "$ROOT_DIR/server/main.py" &
BACKEND_PID=$!
# 5. 启动前端 (Vite)
echo "[2/2] 正在启动前端开发服务器 (端口: 5173)..."
cd "$ROOT_DIR/client"
# 自动修复 Vite 的执行权限问题 (针对 Permission denied 报错)
if [ -f "node_modules/.bin/vite" ]; then
chmod +x node_modules/.bin/vite
fi
# 使用 --host 允许外部通过服务器 IP 访问
npm run dev -- --host &
FRONTEND_PID=$!
echo "------------------------------------------"
echo "✅ 所有服务已尝试启动!"
echo "后端 PID: $BACKEND_PID"
echo "前端 PID: $FRONTEND_PID"
echo "👉 访问地址: http://服务器IP:5173"
echo "💡 提示: 按下 [Ctrl+C] 停止所有服务。"
echo "------------------------------------------"
# 阻塞主进程以保持后台进程运行并输出日志
wait