demo_base.sh
5.77 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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
#!/bin/bash
# Base配置演示流程脚本
# 用于演示店匠通用客户的搜索效果
set -e
cd "$(dirname "$0")/.."
source /home/tw/miniconda3/etc/profile.d/conda.sh
conda activate searchengine
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}Base配置演示流程${NC}"
echo -e "${GREEN}========================================${NC}"
# 加载.env配置文件
if [ -f .env ]; then
set -a
source .env
set +a
fi
# 配置参数(从环境变量或默认值)
TENANT_ID=${1:-"1"}
DB_HOST=${DB_HOST:-"120.79.247.228"}
DB_PORT=${DB_PORT:-"3316"}
DB_DATABASE=${DB_DATABASE:-"saas"}
DB_USERNAME=${DB_USERNAME:-"saas"}
DB_PASSWORD=${DB_PASSWORD:-"P89cZHS5d7dFyc9R"}
ES_HOST=${ES_HOST:-"http://localhost:9200"}
API_PORT=${API_PORT:-"6002"}
FRONTEND_PORT=${FRONTEND_PORT:-"6003"}
echo -e "\n${YELLOW}配置参数:${NC}"
echo " Tenant ID: $TENANT_ID"
echo " MySQL: $DB_HOST:$DB_PORT/$DB_DATABASE"
echo " Elasticsearch: $ES_HOST"
echo " API Port: $API_PORT"
echo " Frontend Port: $FRONTEND_PORT"
# Step 1: 生成测试数据
echo -e "\n${YELLOW}Step 1/5: 生成测试数据${NC}"
if [ ! -f "test_data_base.sql" ]; then
echo "生成100条SPU测试数据..."
python scripts/generate_test_data.py \
--num-spus 100 \
--tenant-id "$TENANT_ID" \
--start-spu-id 1 \
--start-sku-id 1 \
--output test_data_base.sql
echo -e "${GREEN}✓ 测试数据已生成: test_data_base.sql${NC}"
else
echo -e "${YELLOW}⚠ 测试数据文件已存在,跳过生成${NC}"
fi
# Step 2: 导入测试数据到MySQL
echo -e "\n${YELLOW}Step 2/5: 导入测试数据到MySQL${NC}"
if [ -z "$DB_PASSWORD" ]; then
echo -e "${RED}ERROR: DB_PASSWORD未设置,请检查.env文件或环境变量${NC}"
exit 1
fi
python scripts/import_test_data.py \
--db-host "$DB_HOST" \
--db-port "$DB_PORT" \
--db-database "$DB_DATABASE" \
--db-username "$DB_USERNAME" \
--db-password "$DB_PASSWORD" \
--sql-file test_data_base.sql \
--tenant-id "$TENANT_ID"
echo -e "${GREEN}✓ 测试数据已导入MySQL${NC}"
# Step 3: 导入数据到Elasticsearch
echo -e "\n${YELLOW}Step 3/5: 导入数据到Elasticsearch${NC}"
python scripts/ingest_shoplazza.py \
--db-host "$DB_HOST" \
--db-port "$DB_PORT" \
--db-database "$DB_DATABASE" \
--db-username "$DB_USERNAME" \
--db-password "$DB_PASSWORD" \
--tenant-id "$TENANT_ID" \
--config base \
--es-host "$ES_HOST" \
--recreate \
--batch-size 500
echo -e "${GREEN}✓ 数据已导入Elasticsearch${NC}"
# Step 4: 启动后端服务
echo -e "\n${YELLOW}Step 4/5: 启动后端服务${NC}"
echo "后端服务将在后台运行..."
# 创建logs目录
mkdir -p logs
# 启动后端(后台运行)
nohup python -m api.app \
--host 0.0.0.0 \
--port "$API_PORT" \
--customer base \
--es-host "$ES_HOST" > logs/backend_base.log 2>&1 &
BACKEND_PID=$!
echo $BACKEND_PID > logs/backend_base.pid
echo -e "${GREEN}后端服务已启动 (PID: $BACKEND_PID)${NC}"
echo -e "${GREEN}日志文件: logs/backend_base.log${NC}"
# 等待后端启动
echo -e "${YELLOW}等待后端服务启动...${NC}"
MAX_RETRIES=15
RETRY_COUNT=0
BACKEND_READY=false
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
sleep 2
if curl -s "http://localhost:$API_PORT/health" > /dev/null 2>&1; then
BACKEND_READY=true
break
fi
RETRY_COUNT=$((RETRY_COUNT + 1))
echo -e "${YELLOW} 等待中... ($RETRY_COUNT/$MAX_RETRIES)${NC}"
done
if [ "$BACKEND_READY" = true ]; then
echo -e "${GREEN}✓ 后端服务运行正常${NC}"
else
echo -e "${YELLOW}⚠ 后端服务可能还在启动中,请稍后访问${NC}"
fi
# Step 5: 启动前端服务
echo -e "\n${YELLOW}Step 5/5: 启动前端服务${NC}"
echo "前端服务将在后台运行..."
# 创建base配置的前端JS文件
echo "创建base配置前端文件..."
python scripts/create_base_frontend.py --tenant-id "$TENANT_ID" --api-port "$API_PORT"
echo -e "${GREEN}✓ 前端文件已创建${NC}"
# 启动前端(后台运行)
export PORT="$FRONTEND_PORT"
nohup python scripts/frontend_server.py > logs/frontend_base.log 2>&1 &
FRONTEND_PID=$!
echo $FRONTEND_PID > logs/frontend_base.pid
echo -e "${GREEN}前端服务已启动 (PID: $FRONTEND_PID)${NC}"
echo -e "${GREEN}日志文件: logs/frontend_base.log${NC}"
# 等待前端启动
echo -e "${YELLOW}等待前端服务启动...${NC}"
MAX_RETRIES=10
RETRY_COUNT=0
FRONTEND_READY=false
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
sleep 2
if curl -s "http://localhost:$FRONTEND_PORT/" > /dev/null 2>&1; then
FRONTEND_READY=true
break
fi
RETRY_COUNT=$((RETRY_COUNT + 1))
echo -e "${YELLOW} 等待中... ($RETRY_COUNT/$MAX_RETRIES)${NC}"
done
if [ "$FRONTEND_READY" = true ]; then
echo -e "${GREEN}✓ 前端服务运行正常${NC}"
else
echo -e "${YELLOW}⚠ 前端服务可能还在启动中,请稍后访问${NC}"
fi
echo -e "\n${GREEN}========================================${NC}"
echo -e "${GREEN}演示环境启动完成!${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo -e "访问地址:"
echo -e " ${GREEN}前端界面: http://localhost:$FRONTEND_PORT/base${NC}"
echo -e " ${GREEN}后端API: http://localhost:$API_PORT${NC}"
echo -e " ${GREEN}API文档: http://localhost:$API_PORT/docs${NC}"
echo ""
echo -e "配置信息:"
echo -e " Tenant ID: $TENANT_ID"
echo -e " Customer Config: base"
echo ""
echo -e "日志文件:"
echo -e " 后端: logs/backend_base.log"
echo -e " 前端: logs/frontend_base.log"
echo ""
echo -e "停止服务:"
echo -e " 所有服务: ./scripts/stop_base.sh"
echo -e " 单独停止后端: kill \$(cat logs/backend_base.pid)"
echo -e " 单独停止前端: kill \$(cat logs/frontend_base.pid)"
echo ""