Files
ai_wht_wechat/go_backend/start_prod.sh
2025-12-19 22:36:48 +08:00

103 lines
2.2 KiB
Bash

#!/bin/bash
#########################################
# AI小红书 Go 后端 - 生产环境启动脚本
# 专用于生产环境快速部署
#########################################
PORT=8070
ENV="prod"
LOG_FILE="ai_xhs_prod.log"
echo "=== 停止端口 $PORT 上的 Go 服务 ==="
# 方法1: 查找 go run 进程
GO_PID=$(ps aux | grep "go run main.go" | grep -v grep | awk '{print $2}')
if [ -n "$GO_PID" ]; then
echo "找到 Go 服务进程: $GO_PID"
kill -9 $GO_PID 2>/dev/null
echo "Go 服务进程已终止"
sleep 2
fi
# 方法2: 强制清理端口
echo "强制清理端口 $PORT..."
PORT_PID=$(lsof -ti:$PORT 2>/dev/null)
if [ -n "$PORT_PID" ]; then
echo "端口被进程 $PORT_PID 占用,正在终止..."
kill -9 $PORT_PID 2>/dev/null
fi
sudo fuser -k $PORT/tcp 2>/dev/null || true
sudo pkill -f ":$PORT" 2>/dev/null || true
# 等待端口释放
sleep 3
echo ""
echo "=== 环境检查 ==="
# 检查 Go 环境
if ! command -v go &> /dev/null; then
echo "❌ 错误: 未检测到 Go 环境"
exit 1
fi
echo "✅ Go 环境: $(go version)"
# 检查配置文件
if [ ! -f "config/config.prod.yaml" ]; then
echo "❌ 错误: 未找到生产环境配置文件"
exit 1
fi
echo "✅ 配置文件: config/config.prod.yaml"
echo ""
echo "=== 下载依赖 ==="
go mod tidy
echo ""
echo "=== 启动生产环境服务 ==="
# 设置环境变量
export APP_ENV=prod
# 清空旧日志
> $LOG_FILE
# 启动服务
nohup go run main.go > $LOG_FILE 2>&1 &
NEW_PID=$!
echo "✅ 服务已启动 (PID: $NEW_PID)"
# 验证启动
echo ""
echo "=== 启动验证 (等待 5 秒) ==="
sleep 5
if ps -p $NEW_PID > /dev/null 2>&1; then
echo "✅ Go 服务启动成功"
echo "📋 日志文件: $LOG_FILE"
echo "👀 查看日志: tail -f $LOG_FILE"
echo "🌐 服务地址: http://localhost:$PORT"
echo "🔍 进程PID: $NEW_PID"
# 检查端口监听
if lsof -ti:$PORT > /dev/null 2>&1; then
echo "✅ 端口 $PORT 监听正常"
else
echo "⚠️ 端口 $PORT 未监听,请检查日志"
fi
# 显示最近日志
echo ""
echo "=== 最近日志 ==="
tail -n 10 $LOG_FILE
else
echo "❌ Go 服务启动失败,请检查日志"
echo ""
tail -n 20 $LOG_FILE
exit 1
fi