Files
jiang13-bbs/start.sh
freefire 5052bcd805 chore(dev): 按端口杀进程树,避免 Windows 孤儿监听
新增 stop.bat/ps1/sh,并写入本地开发规则:停服务用脚本、停后复核端口。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 07:27:45 +08:00

94 lines
3.0 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
set -euo pipefail
# ═══════════════════════════════════════════
# 姜十三论坛 开发环境启动脚本 (Linux/macOS)
# ═══════════════════════════════════════════
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$ROOT_DIR"
echo "══════════════════════════════════════════"
echo " 姜十三论坛 开发环境启动脚本"
echo "══════════════════════════════════════════"
echo ""
# ---- 1. 启动 PostgreSQL ----
echo "[1/3] 启动数据库 (Docker Compose)..."
if ! command -v docker &>/dev/null; then
echo "✗ 未检测到 docker,请先安装 Docker"
exit 1
fi
docker compose up -d postgres
echo "√ 数据库已启动"
echo ""
# ---- 2. 检查后端配置 ----
echo "[2/3] 检查后端配置..."
if [ ! -f "backend/app.ini" ]; then
cp "backend/app.ini.example" "backend/app.ini"
echo " 已从模板创建 backend/app.ini,请按需修改配置"
fi
mkdir -p backend/data
# 启动后端(后台)
echo " 启动后端 (端口 3001, cwd=backend, data=backend/data)..."
cd "$ROOT_DIR/backend"
go run ./cmd/jiang13 &
BACKEND_PID=$!
cd "$ROOT_DIR"
echo "√ 后端已启动 (PID: $BACKEND_PID)"
echo ""
# ---- 3. 检查前端配置 ----
echo "[3/3] 检查前端配置..."
if [ ! -f "frontend/.env.local" ]; then
cp "frontend/.env.example" "frontend/.env.local"
echo " 已从模板创建 frontend/.env.local"
fi
# 检查 node_modules
if [ ! -d "frontend/node_modules" ]; then
echo " 首次运行,安装前端依赖..."
cd "$ROOT_DIR/frontend"
npm install
cd "$ROOT_DIR"
fi
# 启动前端(后台)
echo " 启动前端 (端口 3000)..."
cd "$ROOT_DIR/frontend"
npm run dev &
FRONTEND_PID=$!
cd "$ROOT_DIR"
echo "√ 前端已启动 (PID: $FRONTEND_PID)"
echo ""
echo "══════════════════════════════════════════"
echo " 全部启动完成!"
echo ""
echo " 前端: http://localhost:3000"
echo " 后端: http://localhost:3001"
echo " 数据目录: $ROOT_DIR/backend/data"
echo " 数据库: localhost:5432"
echo ""
echo " 后端 PID: $BACKEND_PID"
echo " 前端 PID: $FRONTEND_PID"
echo " 停止服务: ./stop.sh (或 Ctrl+C 本脚本)"
echo " 停库: docker compose down"
echo "══════════════════════════════════════════"
# 捕获 Ctrl+C,清理子进程
cleanup() {
echo ""
echo "正在停止服务..."
kill $BACKEND_PID 2>/dev/null || true
kill $FRONTEND_PID 2>/dev/null || true
docker compose down 2>/dev/null || true
echo "已停止"
}
trap cleanup EXIT INT TERM
# 保持脚本运行
wait