lawless/scripts/deploy-wsl.sh
徐勤民 521603a899
一些检测仍在等待运行
Docs Build / build-and-deploy (push) Waiting to run
refactor(client): 删除游戏核心管理器和场景脚本
- 移除 ConfigManager 配置管理器类
- 移除 GameManager 全局单例管理器类
- 移除 NetworkManager 网络连接管理器类
- 移除 CharacterData 和 ItemData 数据模型类
- 移除 BagScene、BattleScene、LobbyScene 等场景脚本
- 移除 EncounterBubble 和 EventFeedPanel UI组件脚本
- 更新代理邀请文档中的服务器连接方式
- 更新同步状态表格中的代理任务分配信息
- 添加 MiMo 任务完成总结和审查修复记录
2026-07-03 21:34:51 +08:00

146 行
3.9 KiB
Bash

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

#!/bin/bash
# 洪荒大陆 - WSL 部署脚本
# 目标机器win.xuqinmin.com (WSL2 Ubuntu)
# 用法:从本地执行 ssh -i ~/.ssh/id_ed25519 -p 2224 xuqm@win.xuqinmin.com 'bash -s' < scripts/deploy-wsl.sh
set -e
echo "=========================================="
echo " 洪荒大陆 - WSL 部署脚本"
echo "=========================================="
# 1. 检查环境
echo ""
echo "[1/6] 检查环境..."
echo " 系统: $(uname -s) $(uname -m)"
echo " 内存: $(free -h | awk '/Mem:/ {print $7}') 可用"
echo " 磁盘: $(df -h / | awk 'NR==2 {print $4}') 可用"
# 2. 安装 Go如果未安装
echo ""
echo "[2/6] 检查 Go..."
if command -v go &> /dev/null; then
echo " Go 已安装: $(go version)"
else
echo " 安装 Go 1.22..."
wget -q https://go.dev/dl/go1.22.4.linux-amd64.tar.gz -O /tmp/go.tar.gz
sudo tar -C /usr/local -xzf /tmp/go.tar.gz
rm /tmp/go.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
export PATH=$PATH:/usr/local/go/bin
echo " Go 安装完成: $(go version)"
fi
# 3. 克隆代码(如果不存在)
echo ""
echo "[3/6] 检查代码..."
DEPLOY_DIR="$HOME/lawless"
if [ -d "$DEPLOY_DIR" ]; then
echo " 代码目录已存在: $DEPLOY_DIR"
cd "$DEPLOY_DIR"
git pull origin main 2>/dev/null || echo " 跳过 git pull可能未配置远程"
else
echo " 克隆代码到 $DEPLOY_DIR..."
# TODO: 替换为实际的 git 仓库地址
# git clone https://xuqinmin.com/xxx/lawless.git "$DEPLOY_DIR"
echo " 请手动克隆代码到 $DEPLOY_DIR"
echo " 命令: git clone <仓库地址> $DEPLOY_DIR"
exit 1
fi
# 4. 配置环境变量
echo ""
echo "[4/6] 配置环境变量..."
if [ ! -f .env ]; then
cat > .env << 'EOF'
# 数据库配置
DATABASE_URL=postgres://postgres:postgres@localhost:5432/honghuang?sslmode=disable
# Nakama 配置
NAKAMA_SERVER_KEY=defaultkey
NAKAMA_SECRET=mysecretkey
# Redis/Valkey 配置
REDIS_URL=redis://localhost:6379
# Nacos 配置
NACOS_SERVER_ADDR=localhost:8848
NACOS_NAMESPACE=dev
# 环境标识
ENV=development
EOF
echo " .env 文件已创建"
else
echo " .env 文件已存在"
fi
# 5. 启动 Docker 服务
echo ""
echo "[5/6] 启动 Docker 服务..."
cd "$DEPLOY_DIR"
# 检查 docker-compose.yml 是否存在
if [ ! -f docker-compose.yml ]; then
echo " 错误: docker-compose.yml 不存在"
exit 1
fi
# 启动服务(使用独立的项目名,避免与其他服务冲突)
docker compose -p lawless -f docker-compose.yml up -d
echo " 等待服务启动..."
sleep 10
# 检查服务状态
echo " 服务状态:"
docker compose -p lawless ps --format "table {{.Name}}\t{{.Status}}\t{{.Ports}}"
# 6. 数据库迁移
echo ""
echo "[6/6] 数据库迁移..."
cd "$DEPLOY_DIR"
# 等待 PostgreSQL 就绪
echo " 等待 PostgreSQL 就绪..."
for i in {1..30}; do
if docker compose -p lawless exec -T postgres pg_isready -U postgres 2>/dev/null; then
echo " PostgreSQL 已就绪"
break
fi
sleep 2
done
# 执行迁移
if [ -f scripts/migrate.sh ]; then
echo " 执行数据库迁移..."
bash scripts/migrate.sh
fi
# 执行 seed
if [ -f scripts/seed.sh ]; then
echo " 执行数据填充..."
bash scripts/seed.sh
fi
echo ""
echo "=========================================="
echo " 部署完成!"
echo "=========================================="
echo ""
echo "服务访问地址:"
echo " PostgreSQL: localhost:5432"
echo " Valkey: localhost:6379"
echo " Nakama: localhost:7350 (gRPC) / localhost:7351 (HTTP)"
echo " Nacos: localhost:8848"
echo ""
echo "常用命令:"
echo " 查看日志: docker compose -p lawless logs -f"
echo " 停止服务: docker compose -p lawless down"
echo " 重启服务: docker compose -p lawless restart"
echo " 构建服务端: cd server && make build"
echo ""
echo "外网访问配置:"
echo " 如需外网访问,请在云服务器 nginx 中添加反代配置"
echo " 或通过 frp 隧道暴露端口"