commit
This commit is contained in:
148
start_all.sh
Normal file
148
start_all.sh
Normal file
@@ -0,0 +1,148 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "========================================"
|
||||
echo " AI小红书项目 - 启动所有服务(生产环境)"
|
||||
echo "========================================"
|
||||
echo
|
||||
|
||||
# 检查Go环境
|
||||
if ! command -v go &> /dev/null; then
|
||||
echo "[错误] 未检测到Go环境,请先安装Go"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查Python环境
|
||||
if ! command -v python3 &> /dev/null; then
|
||||
echo "[错误] 未检测到Python环境,请先安装Python3"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 关闭已运行的服务
|
||||
echo "[准备] 检查并关闭已运行的服务..."
|
||||
|
||||
# 从 PID 文件读取并关闭服务
|
||||
if [ -f "logs/go_backend_prod.pid" ]; then
|
||||
OLD_GO_PID=$(cat logs/go_backend_prod.pid)
|
||||
if kill -0 $OLD_GO_PID 2>/dev/null; then
|
||||
echo "[信息] 关闭旧的Go服务 (PID: $OLD_GO_PID)"
|
||||
kill -9 $OLD_GO_PID 2>/dev/null
|
||||
sleep 1
|
||||
fi
|
||||
rm -f logs/go_backend_prod.pid
|
||||
fi
|
||||
|
||||
if [ -f "logs/python_backend_prod.pid" ]; then
|
||||
OLD_PYTHON_PID=$(cat logs/python_backend_prod.pid)
|
||||
if kill -0 $OLD_PYTHON_PID 2>/dev/null; then
|
||||
echo "[信息] 关闭旧的Python服务 (PID: $OLD_PYTHON_PID)"
|
||||
kill -9 $OLD_PYTHON_PID 2>/dev/null
|
||||
sleep 1
|
||||
fi
|
||||
rm -f logs/python_backend_prod.pid
|
||||
fi
|
||||
|
||||
# 强制清理:查找并杀掉所有相关的Go进程
|
||||
echo "[检查] 查找并清理残留的Go服务进程..."
|
||||
GO_PIDS=$(ps aux | grep "[g]o run main.go" | awk '{print $2}')
|
||||
if [ ! -z "$GO_PIDS" ]; then
|
||||
echo "[清理] 发现残留Go进程: $GO_PIDS"
|
||||
echo $GO_PIDS | xargs kill -9 2>/dev/null
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
# 强制清理:查找并杀掉所有相关的Python进程(只杀backend目录下的main.py)
|
||||
echo "[检查] 查找并清理残留的Python服务进程..."
|
||||
PYTHON_PIDS=$(ps aux | grep "[p]ython.*main.py" | grep backend | awk '{print $2}')
|
||||
if [ ! -z "$PYTHON_PIDS" ]; then
|
||||
echo "[清理] 发现残留Python进程: $PYTHON_PIDS"
|
||||
echo $PYTHON_PIDS | xargs kill -9 2>/dev/null
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
# 检查并清理端口占用(8070端口 - Go服务)
|
||||
echo "[检查] 检查端口8070占用情况..."
|
||||
PORT_8070_PID=$(lsof -ti:8070 2>/dev/null)
|
||||
if [ ! -z "$PORT_8070_PID" ]; then
|
||||
echo "[清理] 端口8070被占用 (PID: $PORT_8070_PID),正在清理..."
|
||||
kill -9 $PORT_8070_PID 2>/dev/null
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
# 检查并清理端口占用(8020端口 - Python服务)
|
||||
echo "[检查] 检查端口8020占用情况..."
|
||||
PORT_8020_PID=$(lsof -ti:8020 2>/dev/null)
|
||||
if [ ! -z "$PORT_8020_PID" ]; then
|
||||
echo "[清理] 端口8020被占用 (PID: $PORT_8020_PID),正在清理..."
|
||||
kill -9 $PORT_8020_PID 2>/dev/null
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
echo "[完成] 已关闭旧服务并清理端口占用"
|
||||
echo
|
||||
|
||||
# 检查Python虚拟环境
|
||||
if [ ! -d "backend/venv" ]; then
|
||||
echo "[警告] Python虚拟环境不存在,正在创建..."
|
||||
cd backend
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
echo "[信息] 正在安装Python依赖..."
|
||||
pip install -r requirements.txt
|
||||
cd ..
|
||||
echo "[成功] Python虚拟环境创建完成"
|
||||
echo
|
||||
fi
|
||||
|
||||
# 创建日志目录
|
||||
mkdir -p logs
|
||||
|
||||
# 启动Go后端服务
|
||||
echo "[1/2] 正在启动Go后端服务(生产环境)..."
|
||||
cd go_backend
|
||||
go mod tidy
|
||||
nohup go run main.go -env=prod > ../logs/go_backend_prod.log 2>&1 &
|
||||
GO_PID=$!
|
||||
echo "[Go服务] PID: $GO_PID"
|
||||
cd ..
|
||||
|
||||
# 等待2秒
|
||||
sleep 2
|
||||
|
||||
# 启动Python服务
|
||||
echo "[2/2] 正在启动Python服务(生产环境)..."
|
||||
cd backend
|
||||
source venv/bin/activate
|
||||
export ENV=prod
|
||||
nohup python main.py > ../logs/python_backend_prod.log 2>&1 &
|
||||
PYTHON_PID=$!
|
||||
echo "[Python服务] PID: $PYTHON_PID"
|
||||
cd ..
|
||||
|
||||
echo
|
||||
echo "========================================"
|
||||
echo " 所有服务启动完成!(生产环境)"
|
||||
echo "========================================"
|
||||
echo
|
||||
echo "[Go服务] PID: $GO_PID | 端口: 8070 (生产环境)"
|
||||
echo "[Python服务] PID: $PYTHON_PID | 端口: 8020 (生产环境)"
|
||||
echo
|
||||
echo "日志文件:"
|
||||
echo " Go服务: logs/go_backend_prod.log"
|
||||
echo " Python服务: logs/python_backend_prod.log"
|
||||
echo
|
||||
echo "停止服务命令:"
|
||||
echo " kill $GO_PID $PYTHON_PID"
|
||||
echo
|
||||
echo "查看日志:"
|
||||
echo " tail -f logs/go_backend_prod.log"
|
||||
echo " tail -f logs/python_backend_prod.log"
|
||||
echo
|
||||
echo "注意:使用 config.prod.yaml 生产配置"
|
||||
echo
|
||||
|
||||
# 保存PID到文件,方便后续停止
|
||||
echo $GO_PID > logs/go_backend_prod.pid
|
||||
echo $PYTHON_PID > logs/python_backend_prod.pid
|
||||
|
||||
echo "PID已保存到 logs/*_prod.pid 文件"
|
||||
echo
|
||||
Reference in New Issue
Block a user