从Volcano-Engine-TTS迁移的原文件,后续将为其适配UI

This commit is contained in:
sun
2026-05-09 17:06:41 +08:00
commit 7c6e6af08a
6 changed files with 1080 additions and 0 deletions
+292
View File
@@ -0,0 +1,292 @@
#!/bin/bash
# ByteDance TTS to OpenAI API Adapter 启动脚本 (Linux优化版)
# 使用Unix LF换行符,避免Windows CRLF问题
# 设置Go代理(中国大陆用户推荐)
export GOPROXY=https://goproxy.cn,direct
# 项目目录 - 自动获取当前目录
PROJECT_DIR=$(pwd)
BINARY_NAME="tts-server"
MAIN_FILE="tts_server_linux.go"
PID_FILE="$PROJECT_DIR/tts-server.pid"
LOG_FILE="$PROJECT_DIR/logs/tts-server.log"
# 创建日志目录
mkdir -p "$PROJECT_DIR/logs"
# 检查Go环境
check_go() {
if ! command -v go &> /dev/null; then
echo "❌ Go 未安装或未添加到 PATH"
echo "请先安装 Go 语言环境"
return 1
fi
echo "✅ Go 环境检查通过: $(go version)"
return 0
}
# 检查依赖
check_deps() {
echo "正在检查 Go 模块依赖..."
cd $PROJECT_DIR
if [ ! -f go.mod ]; then
echo "❌ 未找到 go.mod 文件"
return 1
fi
# 下载依赖
go mod download
if [ $? -ne 0 ]; then
echo "❌ Go 依赖下载失败"
return 1
fi
echo "✅ Go 依赖检查完成"
return 0
}
# 函数:启动服务
start() {
echo "🚀 正在启动 TTS API 服务器..."
# 检查Go环境
if ! check_go; then
return 1
fi
# 检查是否已经运行
if [ -f $PID_FILE ]; then
PID=$(cat $PID_FILE)
if ps -p $PID > /dev/null 2>&1; then
echo "⚠️ 服务已经在运行中 (PID: $PID)"
return 1
fi
fi
# 切换到项目目录
cd $PROJECT_DIR
# 检查主程序文件
if [ ! -f $MAIN_FILE ]; then
echo "❌ 未找到主程序文件: $MAIN_FILE"
echo "请确保 $MAIN_FILE 文件存在"
return 1
fi
# 检查依赖
if ! check_deps; then
return 1
fi
# 构建项目
echo "🔨 正在构建项目..."
go build -o $BINARY_NAME $MAIN_FILE
if [ $? -ne 0 ]; then
echo "❌ 构建失败"
return 1
fi
echo "✅ 构建成功"
# 启动服务
echo "🌟 正在启动服务..."
nohup ./$BINARY_NAME > $LOG_FILE 2>&1 &
PID=$!
echo $PID > $PID_FILE
# 等待启动
sleep 2
# 检查启动状态
if ps -p $PID > /dev/null 2>&1; then
echo "✅ TTS API 服务器启动成功 (PID: $PID)"
echo "📍 端口: 8080"
echo "📄 日志文件: $LOG_FILE"
echo "🌐 访问地址: http://你的服务器IP:8080"
echo "💚 健康检查: http://你的服务器IP:8080/health"
return 0
else
echo "❌ 服务启动失败,请检查日志: $LOG_FILE"
rm -f $PID_FILE
return 1
fi
}
# 函数:停止服务
stop() {
echo "🛑 正在停止 TTS API 服务器..."
if [ -f $PID_FILE ]; then
PID=$(cat $PID_FILE)
if ps -p $PID > /dev/null 2>&1; then
# 优雅关闭(发送 SIGTERM)
kill -TERM $PID
# 等待进程结束
for i in {1..10}; do
if ! ps -p $PID > /dev/null 2>&1; then
echo "✅ 服务已优雅停止 (PID: $PID)"
rm -f $PID_FILE
return 0
fi
sleep 1
done
# 强制杀死进程
echo "⚠️ 进程未响应,强制终止..."
kill -KILL $PID
echo "✅ 服务已强制停止 (PID: $PID)"
rm -f $PID_FILE
else
echo "⚠️ 服务未运行"
rm -f $PID_FILE
fi
else
echo "⚠️ PID文件不存在,服务可能未运行"
fi
}
# 函数:重启服务
restart() {
echo "🔄 正在重启 TTS API 服务器..."
stop
sleep 2
start
}
# 函数:查看状态
status() {
echo "📊 TTS API 服务器状态:"
echo "================================"
if [ -f $PID_FILE ]; then
PID=$(cat $PID_FILE)
if ps -p $PID > /dev/null 2>&1; then
echo "🟢 状态: 运行中"
echo "🆔 PID: $PID"
echo "🕐 运行时间: $(ps -o etime= -p $PID | tr -d ' ')"
echo "💾 内存使用: $(ps -o rss= -p $PID | tr -d ' ') KB"
echo "🌐 端口: 8080"
echo "📄 日志: $LOG_FILE"
# 检查端口是否监听
if command -v netstat &> /dev/null; then
if netstat -tlnp 2>/dev/null | grep ":8080" | grep "$PID" > /dev/null; then
echo "🔗 端口监听: ✅"
else
echo "🔗 端口监听: ❌"
fi
fi
else
echo "🔴 状态: 未运行(PID文件存在但进程不存在)"
rm -f $PID_FILE
fi
else
echo "🔴 状态: 未运行"
fi
echo "================================"
}
# 函数:查看日志
logs() {
if [ -f $LOG_FILE ]; then
echo "📄 实时日志 (按 Ctrl+C 退出):"
echo "================================"
tail -f $LOG_FILE
else
echo "❌ 日志文件不存在: $LOG_FILE"
fi
}
# 函数:查看最近日志
lastlog() {
if [ -f $LOG_FILE ]; then
echo "📄 最近 50 行日志:"
echo "================================"
tail -n 50 $LOG_FILE
else
echo "❌ 日志文件不存在: $LOG_FILE"
fi
}
# 函数:测试服务
test() {
echo "🧪 正在测试 TTS API 服务器..."
# 检查健康状态
echo "1. 健康检查测试..."
if command -v curl &> /dev/null; then
response=$(curl -s -w "%{http_code}" -o /tmp/health_check.tmp http://localhost:8080/health)
if [ "$response" = "200" ]; then
echo "✅ 健康检查通过"
cat /tmp/health_check.tmp | python3 -m json.tool 2>/dev/null || cat /tmp/health_check.tmp
else
echo "❌ 健康检查失败 (HTTP: $response)"
fi
rm -f /tmp/health_check.tmp
else
echo "⚠️ curl 未安装,跳过健康检查"
fi
}
# 显示帮助信息
usage() {
echo "ByteDance TTS to OpenAI API Adapter 管理脚本 (Linux优化版)"
echo ""
echo "使用方法: $0 {命令}"
echo ""
echo "可用命令:"
echo " start - 启动服务"
echo " stop - 停止服务"
echo " restart - 重启服务"
echo " status - 查看详细状态"
echo " logs - 实时查看日志"
echo " lastlog - 查看最近日志"
echo " test - 测试服务"
echo " help - 显示帮助信息"
echo ""
echo "示例:"
echo " ./start_linux.sh start"
echo " ./start_linux.sh status"
echo " ./start_linux.sh logs"
}
# 主程序逻辑
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
logs)
logs
;;
lastlog)
lastlog
;;
test)
test
;;
help|--help|-h)
usage
;;
*)
echo "❌ 未知命令: $1"
echo ""
usage
exit 1
;;
esac
exit $?