1. 修改了应用端口的问题
2. 增加了创建虚拟环境的脚本和删除虚拟环境的脚本
This commit is contained in:
174
start_all.sh
Normal file
174
start_all.sh
Normal file
@@ -0,0 +1,174 @@
|
||||
#!/bin/bash
|
||||
# YG_FT_Base 统一启动脚本
|
||||
# 同时启动后端 API 服务和 Web 静态服务器
|
||||
# 使用方法: bash start_all.sh
|
||||
|
||||
# 自动修复脚本换行符
|
||||
if grep -q $'\r' "$0"; then
|
||||
echo "检测到 Windows 换行符,自动修复中..."
|
||||
sed -i 's/\r$//' "$0"
|
||||
echo "修复完成,重新执行脚本..."
|
||||
exec "$0"
|
||||
fi
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
echo "===================================="
|
||||
echo "YG_FT_Base 统一启动脚本"
|
||||
echo "===================================="
|
||||
echo ""
|
||||
|
||||
# 读取配置
|
||||
CONFIG_FILE="$SCRIPT_DIR/config.yaml"
|
||||
if [ -f "$CONFIG_FILE" ]; then
|
||||
API_PORT=$(python3 -c "import yaml; print(yaml.safe_load(open('$CONFIG_FILE'))['app'].get('port', 7861))" 2>/dev/null)
|
||||
WEB_PORT=$(python3 -c "import yaml; print(yaml.safe_load(open('$CONFIG_FILE'))['app'].get('web_port', 7862))" 2>/dev/null)
|
||||
[ -z "$API_PORT" ] && API_PORT=7861
|
||||
[ -z "$WEB_PORT" ] && WEB_PORT=7862
|
||||
else
|
||||
API_PORT=7861
|
||||
WEB_PORT=7862
|
||||
fi
|
||||
|
||||
echo "📦 端口配置:"
|
||||
echo " - 后端 API: $API_PORT"
|
||||
echo " - Web 服务器: $WEB_PORT"
|
||||
echo ""
|
||||
|
||||
# 检查端口是否已被占用
|
||||
check_port() {
|
||||
if lsof -i:$1 &> /dev/null || netstat -tuln | grep -q ":$1 " 2>/dev/null; then
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
# 启动后端 API 服务
|
||||
start_api() {
|
||||
echo "🚀 启动后端 API 服务..."
|
||||
if [ -f "requirements.txt" ]; then
|
||||
if [ -d "B_venv" ]; then
|
||||
source B_venv/bin/activate
|
||||
else
|
||||
echo "⚠️ 虚拟环境不存在,请先运行 create_venv.sh 创建"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# 检查端口
|
||||
if ! check_port $API_PORT; then
|
||||
echo "❌ 端口 $API_PORT 已被占用,后端服务可能已在运行"
|
||||
return 1
|
||||
fi
|
||||
|
||||
python src/main.py &
|
||||
API_PID=$!
|
||||
echo "✅ 后端服务已启动 (PID: $API_PID, 端口: $API_PORT)"
|
||||
echo "$API_PID" > /tmp/ygft_api.pid
|
||||
}
|
||||
|
||||
# 启动 Web 静态服务器
|
||||
start_web() {
|
||||
echo ""
|
||||
echo "🚀 启动 Web 静态服务器..."
|
||||
cd "$SCRIPT_DIR/web"
|
||||
|
||||
# 检查端口
|
||||
if ! check_port $WEB_PORT; then
|
||||
echo "⚠️ 端口 $WEB_PORT 已被占用,Web 服务可能已在运行"
|
||||
return 1
|
||||
fi
|
||||
|
||||
python3 -m http.server $WEB_PORT &
|
||||
WEB_PID=$!
|
||||
echo "✅ Web 服务已启动 (PID: $WEB_PID, 端口: $WEB_PORT)"
|
||||
echo "$WEB_PID" > /tmp/ygft_web.pid
|
||||
}
|
||||
|
||||
# 停止服务
|
||||
stop_all() {
|
||||
echo ""
|
||||
echo "🛑 停止所有服务..."
|
||||
|
||||
if [ -f /tmp/ygft_api.pid ]; then
|
||||
kill $(cat /tmp/ygft_api.pid) 2>/dev/null
|
||||
rm /tmp/ygft_api.pid
|
||||
echo "✅ 后端服务已停止"
|
||||
fi
|
||||
|
||||
if [ -f /tmp/ygft_web.pid ]; then
|
||||
kill $(cat /tmp/ygft_web.pid) 2>/dev/null
|
||||
rm /tmp/ygft_web.pid
|
||||
echo "✅ Web 服务已停止"
|
||||
fi
|
||||
|
||||
# 清理可能残留的进程
|
||||
pkill -f "src/main.py" 2>/dev/null
|
||||
pkill -f "http.server $WEB_PORT" 2>/dev/null
|
||||
}
|
||||
|
||||
# 显示状态
|
||||
status() {
|
||||
echo ""
|
||||
echo "📊 服务状态:"
|
||||
echo ""
|
||||
|
||||
if [ -f /tmp/ygft_api.pid ] && kill -0 $(cat /tmp/ygft_api.pid) 2>/dev/null; then
|
||||
echo "✅ 后端 API: 运行中 (PID: $(cat /tmp/ygft_api.pid), 端口: $API_PORT)"
|
||||
else
|
||||
echo "❌ 后端 API: 未运行"
|
||||
fi
|
||||
|
||||
if [ -f /tmp/ygft_web.pid ] && kill -0 $(cat /tmp/ygft_web.pid) 2>/dev/null; then
|
||||
echo "✅ Web 服务: 运行中 (PID: $(cat /tmp/ygft_web.pid), 端口: $WEB_PORT)"
|
||||
else
|
||||
echo "❌ Web 服务: 未运行"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "🌐 访问地址:"
|
||||
echo " - 后端 API: http://localhost:$API_PORT"
|
||||
echo " - Web 页面: http://localhost:$WEB_PORT/pages/main.html"
|
||||
}
|
||||
|
||||
# 主菜单
|
||||
case "$1" in
|
||||
start)
|
||||
start_api
|
||||
start_web
|
||||
echo ""
|
||||
echo "===================================="
|
||||
echo "所有服务已启动!"
|
||||
echo "===================================="
|
||||
status
|
||||
;;
|
||||
stop)
|
||||
stop_all
|
||||
echo "✅ 所有服务已停止"
|
||||
;;
|
||||
restart)
|
||||
stop_all
|
||||
sleep 1
|
||||
start_api
|
||||
start_web
|
||||
echo ""
|
||||
echo "===================================="
|
||||
echo "所有服务已重启!"
|
||||
echo "===================================="
|
||||
status
|
||||
;;
|
||||
status)
|
||||
status
|
||||
;;
|
||||
*)
|
||||
echo "用法: $0 {start|stop|restart|status}"
|
||||
echo ""
|
||||
echo "命令:"
|
||||
echo " start - 启动所有服务"
|
||||
echo " stop - 停止所有服务"
|
||||
echo " restart - 重启所有服务"
|
||||
echo " status - 查看服务状态"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user