201 lines
6.1 KiB
Bash
201 lines
6.1 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
echo "🚀 大模型微调平台 - 一键启动"
|
|||
|
|
echo "=================================="
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 确保在正确的目录中
|
|||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|||
|
|
cd "$SCRIPT_DIR"
|
|||
|
|
|
|||
|
|
echo "📂 当前目录: $SCRIPT_DIR"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 获取本机IP地址
|
|||
|
|
SERVER_IP=$(hostname -I | awk '{print $1}')
|
|||
|
|
echo "🌐 本机 IP 地址: $SERVER_IP"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 检查Python是否安装
|
|||
|
|
if ! command -v python3 &> /dev/null; then
|
|||
|
|
echo "❌ 错误: Python3 未安装"
|
|||
|
|
echo "请先安装 Python3"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "请选择启动方式:"
|
|||
|
|
echo "1) 启动所有服务(FastAPI + Web前端)"
|
|||
|
|
echo "2) 只启动 FastAPI 服务(端口 8001)"
|
|||
|
|
echo "3) 只启动 Web 前端服务(端口 8000)"
|
|||
|
|
echo "4) 交互式选择"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
read -p "请输入选择 (1-4): " choice
|
|||
|
|
|
|||
|
|
case $choice in
|
|||
|
|
1)
|
|||
|
|
echo ""
|
|||
|
|
echo "✅ 启动所有服务..."
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 检查并启动 FastAPI 服务
|
|||
|
|
echo "🔧 启动 FastAPI 服务..."
|
|||
|
|
cd "$SCRIPT_DIR/src"
|
|||
|
|
if [ ! -d "node_modules" ] 2>/dev/null && [ ! -f "main.py" ]; then
|
|||
|
|
echo "⚠️ 警告: 未找到 FastAPI 源码文件"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 启动 FastAPI (后台运行)
|
|||
|
|
cd "$SCRIPT_DIR/src"
|
|||
|
|
python3 -m uvicorn main:app --host 0.0.0.0 --port 8001 &
|
|||
|
|
FASTAPI_PID=$!
|
|||
|
|
echo "✅ FastAPI 服务已启动 (PID: $FASTAPI_PID)"
|
|||
|
|
echo " API 地址: http://localhost:8001"
|
|||
|
|
echo " API 文档: http://localhost:8001/docs"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 等待 FastAPI 启动
|
|||
|
|
sleep 2
|
|||
|
|
|
|||
|
|
# 启动 Web 前端服务
|
|||
|
|
echo "🌐 启动 Web 前端服务..."
|
|||
|
|
cd "$SCRIPT_DIR/web"
|
|||
|
|
python3 -m http.server 8000 &
|
|||
|
|
WEB_PID=$!
|
|||
|
|
echo "✅ Web 前端服务已启动 (PID: $WEB_PID)"
|
|||
|
|
echo " 前端地址: http://localhost:8000"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
echo "=================================="
|
|||
|
|
echo "🎉 所有服务启动完成!"
|
|||
|
|
echo ""
|
|||
|
|
echo "📱 访问地址:"
|
|||
|
|
echo " - 前端页面: http://$SERVER_IP:8000/pages/main.html"
|
|||
|
|
echo " - 登录页面: http://$SERVER_IP:8000/pages/login.html"
|
|||
|
|
echo " - API 服务: http://$SERVER_IP:8001"
|
|||
|
|
echo " - API 文档: http://$SERVER_IP:8001/docs"
|
|||
|
|
echo ""
|
|||
|
|
echo "⚠️ 按 Ctrl+C 停止所有服务"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 等待用户中断
|
|||
|
|
trap "echo ''; echo '🛑 正在停止服务...'; kill $FASTAPI_PID $WEB_PID 2>/dev/null; echo '✅ 所有服务已停止'; exit 0" INT
|
|||
|
|
|
|||
|
|
# 保持脚本运行
|
|||
|
|
while true; do
|
|||
|
|
sleep 1
|
|||
|
|
done
|
|||
|
|
;;
|
|||
|
|
|
|||
|
|
2)
|
|||
|
|
echo ""
|
|||
|
|
echo "🔧 启动 FastAPI 服务..."
|
|||
|
|
cd "$SCRIPT_DIR/src"
|
|||
|
|
|
|||
|
|
# 检查源码文件是否存在
|
|||
|
|
if [ ! -f "main.py" ]; then
|
|||
|
|
echo "❌ 错误: 未找到 main.py 文件"
|
|||
|
|
echo "请确保在正确的目录中"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "✅ FastAPI 服务启动中..."
|
|||
|
|
echo " API 地址: http://localhost:8001"
|
|||
|
|
echo " API 文档: http://localhost:8001/docs"
|
|||
|
|
echo ""
|
|||
|
|
echo "⚠️ 按 Ctrl+C 停止服务"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
python3 -m uvicorn main:app --host 0.0.0.0 --port 8001 --reload
|
|||
|
|
;;
|
|||
|
|
|
|||
|
|
3)
|
|||
|
|
echo ""
|
|||
|
|
echo "🌐 启动 Web 前端服务..."
|
|||
|
|
cd "$SCRIPT_DIR/web"
|
|||
|
|
|
|||
|
|
# 检查页面文件是否存在
|
|||
|
|
if [ ! -f "pages/main.html" ]; then
|
|||
|
|
echo "❌ 错误: 未找到 pages/main.html 文件"
|
|||
|
|
echo "请确保在正确的目录中"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "✅ Web 前端服务启动中..."
|
|||
|
|
echo " 前端地址: http://localhost:8000"
|
|||
|
|
echo ""
|
|||
|
|
echo "⚠️ 按 Ctrl+C 停止服务"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
python3 -m http.server 8000
|
|||
|
|
;;
|
|||
|
|
|
|||
|
|
4)
|
|||
|
|
echo ""
|
|||
|
|
echo "🔧 检查服务状态..."
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 检查 FastAPI
|
|||
|
|
if curl -s http://localhost:8001 > /dev/null 2>&1; then
|
|||
|
|
echo "✅ FastAPI 服务正在运行 (端口 8001)"
|
|||
|
|
else
|
|||
|
|
echo "❌ FastAPI 服务未运行 (端口 8001)"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 检查 Web 服务
|
|||
|
|
if curl -s http://localhost:8000 > /dev/null 2>&1; then
|
|||
|
|
echo "✅ Web 前端服务正在运行 (端口 8000)"
|
|||
|
|
else
|
|||
|
|
echo "❌ Web 前端服务未运行 (端口 8000)"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
read -p "是否启动 FastAPI 服务?(y/n): " start_fastapi
|
|||
|
|
if [[ $start_fastapi == "y" || $start_fastapi == "Y" ]]; then
|
|||
|
|
cd "$SCRIPT_DIR/src"
|
|||
|
|
python3 -m uvicorn main:app --host 0.0.0.0 --port 8001 &
|
|||
|
|
FASTAPI_PID=$!
|
|||
|
|
echo "✅ FastAPI 服务已启动 (PID: $FASTAPI_PID)"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
read -p "是否启动 Web 前端服务?(y/n): " start_web
|
|||
|
|
if [[ $start_web == "y" || $start_web == "Y" ]]; then
|
|||
|
|
cd "$SCRIPT_DIR/web"
|
|||
|
|
python3 -m http.server 8000 &
|
|||
|
|
WEB_PID=$!
|
|||
|
|
echo "✅ Web 前端服务已启动 (PID: $WEB_PID)"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if [[ $start_fastapi == "y" || $start_fastapi == "Y" || $start_web == "y" || $start_web == "Y" ]]; then
|
|||
|
|
echo ""
|
|||
|
|
echo "=================================="
|
|||
|
|
echo "🎉 服务启动完成!"
|
|||
|
|
echo ""
|
|||
|
|
echo "📱 访问地址:"
|
|||
|
|
echo " - 前端页面: http://$SERVER_IP:8000/pages/main.html"
|
|||
|
|
echo " - 登录页面: http://$SERVER_IP:8000/pages/login.html"
|
|||
|
|
echo " - API 服务: http://$SERVER_IP:8001"
|
|||
|
|
echo " - API 文档: http://$SERVER_IP:8001/docs"
|
|||
|
|
echo ""
|
|||
|
|
echo "⚠️ 按 Ctrl+C 停止服务"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 等待用户中断
|
|||
|
|
trap "echo ''; echo '🛑 正在停止服务...'; kill $FASTAPI_PID $WEB_PID 2>/dev/null; echo '✅ 所有服务已停止'; exit 0" INT
|
|||
|
|
|
|||
|
|
# 保持脚本运行
|
|||
|
|
while true; do
|
|||
|
|
sleep 1
|
|||
|
|
done
|
|||
|
|
else
|
|||
|
|
echo "未启动任何服务"
|
|||
|
|
fi
|
|||
|
|
;;
|
|||
|
|
|
|||
|
|
*)
|
|||
|
|
echo "❌ 无效选择,请运行脚本重新选择"
|
|||
|
|
exit 1
|
|||
|
|
;;
|
|||
|
|
esac
|