-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
96 lines (80 loc) · 2.96 KB
/
deploy.sh
File metadata and controls
96 lines (80 loc) · 2.96 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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/bin/bash
# KPL Stats 手动部署脚本
# 用法:./deploy.sh
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}================================${NC}"
echo -e "${GREEN} KPL Stats 部署脚本${NC}"
echo -e "${GREEN}================================${NC}"
# 配置(请根据实际情况修改)
SERVER_USER="root"
SERVER_HOST="your.server.ip"
SERVER_PORT="22" # 如果不是 22,请修改
DEPLOY_PATH="/root/kpl_stats"
FRONTEND_TARGET="/var/www/kpl-stats/dist"
# 1. 构建前端
echo -e "${YELLOW}[1/5] 构建前端...${NC}"
cd frontend
npm install
npm run build
cd ..
# 2. 构建 Homepage(包含压缩和配置生成)
echo -e "${YELLOW}[2/5] 构建 Homepage(生成配置 + 压缩)...${NC}"
cd homepage
npm install
npm run build
cd ..
# 3. 复制文件到服务器
echo -e "${YELLOW}[3/5] 上传文件到服务器...${NC}"
ssh -p $SERVER_PORT $SERVER_USER@$SERVER_HOST "mkdir -p $DEPLOY_PATH $FRONTEND_TARGET"
scp -P $SERVER_PORT -r frontend/dist/* $SERVER_USER@$SERVER_HOST:$FRONTEND_TARGET
scp -P $SERVER_PORT -r homepage/dist/* $SERVER_USER@$SERVER_HOST:$FRONTEND_TARGET/
scp -P $SERVER_PORT -r backend $SERVER_USER@$SERVER_HOST:$DEPLOY_PATH/
scp -P $SERVER_PORT docker-compose.yml $SERVER_USER@$SERVER_HOST:$DEPLOY_PATH/
# 4. 部署后端
echo -e "${YELLOW}[4/5] 部署后端服务...${NC}"
ssh -p $SERVER_PORT $SERVER_USER@$SERVER_HOST << 'ENDSSH'
cd /root/kpl_stats
# 复制环境变量(如果不存在)
if [ ! -f backend/.env ]; then
cp backend/.env.example backend/.env
echo "请编辑 backend/.env 配置环境变量"
fi
# 构建并启动容器
docker compose -f docker-compose.yml down
docker compose -f docker-compose.yml build
docker compose -f docker-compose.yml up -d
ENDSSH
# 5. 配置 OpenResty(首次部署需要)
echo -e "${YELLOW}[5/5] 检查 OpenResty 配置...${NC}"
read -p "是否需要配置 OpenResty?(y/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
scp -P $SERVER_PORT openresty/conf.d/kpl-stats.conf $SERVER_USER@$SERVER_HOST:/path/to/openresty/conf.d/
ssh -p $SERVER_PORT $SERVER_USER@$SERVER_HOST "docker exec openresty nginx -s reload"
echo -e "${GREEN}OpenResty 配置已更新${NC}"
fi
# 6. 检查服务状态
echo -e "${YELLOW}[6/5] 检查服务状态...${NC}"
ssh -p $SERVER_PORT $SERVER_USER@$SERVER_HOST << 'ENDSSH'
echo "--- 后端容器状态 ---"
docker ps | grep kpl-stats-backend
echo -e "\n--- 端口监听 ---"
netstat -tlnp | grep 8001
echo -e "\n--- 前端目录 ---"
ls -la /var/www/kpl-stats/dist/
ENDSSH
echo -e "${GREEN}================================${NC}"
echo -e "${GREEN} 部署完成!${NC}"
echo -e "${GREEN}================================${NC}"
echo ""
echo "访问地址:http://data.kplwuyan.site"
echo ""
echo -e "${YELLOW}后续操作:${NC}"
echo "1. 配置 OpenResty(如果还没配置)"
echo "2. 申请 SSL 证书(推荐 Let's Encrypt)"
echo "3. 访问 https://blog.kplwuyan.site 测试"