-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdeplay.sh
More file actions
77 lines (57 loc) · 3.2 KB
/
Copy pathdeplay.sh
File metadata and controls
77 lines (57 loc) · 3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/bin/bash
# 设置颜色变量
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
# 打印信息
echo -e "${GREEN}开始部署项目...${NC}"
# 进入项目根目录
echo -e "${GREEN}进入项目根目录 /var/www/aiph/${NC}"
cd /var/www/aiph/ || { echo -e "${RED}目录 /var/www/aiph/ 不存在,请检查!${NC}"; exit 1; }
# 拉取最新代码
echo -e "${GREEN}拉取最新代码...${NC}"
git pull || { echo -e "${RED}Git 拉取失败,请检查!${NC}"; exit 1; }
# 前端部署
echo -e "${GREEN}开始部署前端...${NC}"
cd /var/www/aiph/frontend/ || { echo -e "${RED}目录 /var/www/aiph/frontend/ 不存在,请检查!${NC}"; exit 1; }
# 删除前端依赖和缓存文件
echo -e "${GREEN}清理前端依赖和缓存文件...${NC}"
rm -rf node_modules package-lock.json pnpm-lock.yaml .next || { echo -e "${RED}前端依赖或缓存清理失败,请检查!${NC}"; exit 1; }
# 安装依赖
echo -e "${GREEN}安装前端依赖...${NC}"
pnpm i || { echo -e "${RED}前端依赖安装失败,请检查!${NC}"; exit 1; }
# 手动同步 .env.production 文件
cp .env.production .env || { echo -e "${RED}.env.production 文件不存在,请检查!${NC}"; exit 1; }
# 构建前端项目
echo -e "${GREEN}构建前端项目...${NC}"
npm run build || { echo -e "${RED}前端构建失败,请检查!${NC}"; exit 1; }
# 使用 PM2 启动/重启前端项目
echo -e "${GREEN}使用 PM2 启动/重启前端项目...${NC}"
pm2 restart aipc-frontend || pm2 start npm --name "aipc-frontend" -- run start || { echo -e "${RED}PM2 启动/重启前端失败,请检查!${NC}"; exit 1; }
# 后端部署
echo -e "${GREEN}开始部署后端...${NC}"
cd /var/www/aiph/backend/ || { echo -e "${RED}目录 /var/www/aiph/backend/ 不存在,请检查!${NC}"; exit 1; }
# 清理旧的依赖
echo -e "${GREEN}清理旧的依赖...${NC}"
rm -rf node_modules package-lock.json || { echo -e "${RED}清理旧的依赖失败,请检查!${NC}"; exit 1; }
# 安装依赖
echo -e "${GREEN}安装后端依赖...${NC}"
pnpm i || { echo -e "${RED}后端依赖安装失败,请检查!${NC}"; exit 1; }
# 生成 Prisma 客户端
echo -e "${GREEN}使用 .env.production 作为环境变量...${NC}"
cp .env.production .env || { echo -e "${RED}.env.production 文件不存在,请检查!${NC}"; exit 1; }
echo -e "${GREEN}生成 Prisma 客户端...${NC}"
npx prisma generate || { echo -e "${RED}生成 Prisma 客户端失败,请检查!${NC}"; exit 1; }
# 运行数据库迁移
echo -e "${GREEN}运行数据库迁移...${NC}"
npx prisma migrate deploy || { echo -e "${RED}数据库迁移失败,请检查!${NC}"; exit 1; }
# 手动同步 .env.production 文件
cp .env.production .env || { echo -e "${RED}.env.production 文件不存在,请检查!${NC}"; exit 1; }
# 构建后端项目
echo -e "${GREEN}构建后端项目...${NC}"
npm run build || { echo -e "${RED}后端构建失败,请检查!${NC}"; exit 1; }
# 使用 PM2 启动/重启后端项目
echo -e "${GREEN}使用 PM2 启动/重启后端项目...${NC}"
pm2 restart aipc-backend || pm2 start ./dist/src/index.js --name "aipc-backend" || { echo -e "${RED}PM2 启动/重启后端失败,请检查!${NC}"; exit 1; }
# 完成部署
echo -e "${GREEN}项目部署完成!${NC}"