64 lines
1.6 KiB
Bash
64 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
# 部署辅助脚本:在服务器上解压后执行 ./deploy.sh
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
echo "==> 声转文 部署"
|
|
|
|
# 1. Node 版本检查
|
|
if ! command -v node >/dev/null 2>&1; then
|
|
echo "错误:未找到 node。请先安装 Node.js 20+"
|
|
echo " Ubuntu/Debian: curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && apt install -y nodejs"
|
|
exit 1
|
|
fi
|
|
NODE_MAJOR=$(node -p "process.versions.node.split('.')[0]")
|
|
if [ "$NODE_MAJOR" -lt 20 ]; then
|
|
echo "错误:需要 Node.js 20+,当前 $(node -v)"
|
|
exit 1
|
|
fi
|
|
echo " Node $(node -v)"
|
|
|
|
# 2. 装依赖(用 lock 文件保证可复现)
|
|
echo "==> 安装依赖"
|
|
if [ -f package-lock.json ]; then
|
|
npm ci --omit=dev
|
|
else
|
|
npm install --omit=dev
|
|
fi
|
|
|
|
# 3. 配置文件
|
|
if [ ! -f .env ]; then
|
|
cp .env.example .env
|
|
echo "==> 已生成 .env(使用默认护栏值)"
|
|
echo " 建议按机器规格调整后再启动"
|
|
else
|
|
echo "==> 复用现有 .env"
|
|
fi
|
|
|
|
# 4. 临时目录
|
|
mkdir -p tmp
|
|
|
|
# 5. 自测(确认 ffmpeg 可用、能力开关正确)
|
|
echo "==> 自测"
|
|
if npm test; then
|
|
echo " 自测通过"
|
|
else
|
|
echo "警告:自测未全部通过,请检查上面的输出"
|
|
fi
|
|
|
|
# 6. 打印启动方式
|
|
echo ""
|
|
echo "============================================"
|
|
echo "就绪。启动方式二选一:"
|
|
echo ""
|
|
echo " A) 直接运行(前台,适合 systemd 托管)"
|
|
echo " set -a; . ./.env; set +a; node server/index.js"
|
|
echo ""
|
|
echo " B) Docker"
|
|
echo " docker compose up -d --build"
|
|
echo ""
|
|
echo " 访问 http://<服务器IP>:3000"
|
|
echo " 健康检查 http://<服务器IP>:3000/api/health"
|
|
echo "============================================"
|