55 lines
1.4 KiB
Bash
55 lines
1.4 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# 部署脚本 - 在远程服务器上执行
|
||
|
|
# 用法: ./deploy.sh <部署目录>
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
DEPLOY_DIR=${1:-/opt/nginx/html/ai/current}
|
||
|
|
BACKEND_DIR="$DEPLOY_DIR/backend"
|
||
|
|
|
||
|
|
echo "开始部署到: $DEPLOY_DIR"
|
||
|
|
|
||
|
|
# 检查部署目录是否存在
|
||
|
|
if [ ! -d "$DEPLOY_DIR" ]; then
|
||
|
|
echo "错误: 部署目录不存在: $DEPLOY_DIR"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 进入后端目录
|
||
|
|
cd "$BACKEND_DIR" || exit 1
|
||
|
|
|
||
|
|
# 安装后端依赖(仅生产依赖)
|
||
|
|
if [ -f "package.json" ]; then
|
||
|
|
echo "安装后端依赖..."
|
||
|
|
npm ci --production || npm install --production
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 初始化数据库(如果需要)
|
||
|
|
if [ -d "prisma" ]; then
|
||
|
|
echo "初始化数据库..."
|
||
|
|
# 检查数据库文件是否存在
|
||
|
|
if [ ! -f "prisma/dev.db" ]; then
|
||
|
|
echo "数据库不存在,执行迁移..."
|
||
|
|
npx prisma migrate deploy || npx prisma migrate dev
|
||
|
|
npx prisma generate
|
||
|
|
# 如果有 seed 文件,执行 seed
|
||
|
|
if [ -f "prisma/seed.ts" ]; then
|
||
|
|
npx tsx prisma/seed.ts || echo "Seed 执行失败或已存在数据"
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo "数据库已存在,执行迁移..."
|
||
|
|
npx prisma migrate deploy || npx prisma migrate dev
|
||
|
|
npx prisma generate
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 设置文件权限
|
||
|
|
echo "设置文件权限..."
|
||
|
|
chmod +x dist/index.js 2>/dev/null || true
|
||
|
|
|
||
|
|
echo "部署脚本执行完成!"
|
||
|
|
echo "部署目录: $DEPLOY_DIR"
|
||
|
|
echo "前端文件: $DEPLOY_DIR"
|
||
|
|
echo "后端文件: $BACKEND_DIR"
|