Files
BlueArchiveToolkit/docs/guides/deployment.md
T

5.7 KiB
Raw Blame History

部署指南

架构概览

BlueArchive Toolkit 的部署文档分为当前可用模式和目标模式:

  1. 本地开发模式:代码在本地,连接本地或远程数据库。
  2. 官方资源同步生产任务:当前可用,运行 Rust bat-official-sync --watch
  3. 完整单机/分布式部署:目标模式,等待 API Server、数据库迁移和 Web 实现后补齐。

模式 1:本地开发 + 远程数据库

适用场景:本地开发,数据库部署在有公网 IP 的远程服务器

步骤

1. 在远程服务器上部署数据库

# SSH 登录到服务器
ssh user@your.server.com

# 创建部署目录
mkdir -p ~/bat/deployments
cd ~/bat/deployments

# 上传配置文件(在本地执行)
scp -r deployments/* user@your.server.com:~/bat/deployments/

# 配置环境变量
cp .env.example .env
nano .env  # 设置强密码

# 启动数据库
docker compose -f docker-compose.remote-db.yml up -d

# 查看状态
docker compose -f docker-compose.remote-db.yml ps

2. 配置防火墙

# 开放 PostgreSQL 端口
sudo ufw allow 5432/tcp

# 开放 Redis 端口
sudo ufw allow 6379/tcp

# 查看状态
sudo ufw status

3. 本地连接配置

在本地项目根目录创建 .env

DB_HOST=your.server.ip.address
DB_PORT=5432
DB_USER=bat_user
DB_PASSWORD=your_secure_password
DB_NAME=bluearchive_toolkit

REDIS_HOST=your.server.ip.address
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password

4. 测试连接

# 测试 PostgreSQL 连接
psql -h your.server.ip.address -U bat_user -d bluearchive_toolkit

# 测试 Redis 连接
redis-cli -h your.server.ip.address -p 6379 -a your_redis_password ping

模式 2:本地数据库(开发)

适用场景:完全本地开发,不需要远程服务器

# 启动本地数据库
docker compose -f deployments/docker-compose.dev.yml --profile local-db up -d

# 配置 .env
DB_HOST=localhost
DB_PORT=5432
REDIS_HOST=localhost
REDIS_PORT=6379

模式 3:官方资源同步生产任务

当前可部署的生产任务是 Rust 官方资源同步 binary。API Server 和 Web 尚未实现,不能按完整服务端产品部署。

构建

cargo build --release -p bat-infrastructure --bin bat-official-sync

产物:

target/release/bat-official-sync

目录约定

推荐生产状态目录:

/var/lib/bluearchive-toolkit/official/

该目录会保存:

  • official-sync-snapshot.json
  • official-bootstrap-cache.json
  • official-download-manifest.json
  • .official-sync.lock
  • 下载得到的官方资源文件

不要把输出目录设为:

  • 已安装游戏客户端目录
  • 官方启动器安装目录
  • 开发机现有资源目录,例如 /home/wanye/D/BlueArchive
  • Git 工作区目录

一次性检查

/opt/bluearchive-toolkit/bin/bat-official-sync \
  --auto-discover \
  --platforms Windows,Android \
  --output /var/lib/bluearchive-toolkit/official \
  --dry-run

常驻自动更新

/opt/bluearchive-toolkit/bin/bat-official-sync \
  --auto-discover \
  --platforms Windows,Android \
  --output /var/lib/bluearchive-toolkit/official \
  --watch

--watch 是 Rust 内部持久检查模式,正常情况下默认每 1 小时执行一次检查。远端和本地一致时默认静默;有远端变化或本地文件损坏时自动下载或 repair,并输出 JSON report。下载、发现或校验失败时默认 60 秒后重试,可显式加 --error-retry 60s--error-retry-seconds 60 调整。默认进度日志写到 stderr,成功 JSON report 写到 stdout;如果由上层服务严格解析 stderr/stdout,可加 --no-progress

systemd service 示例

systemd 只负责进程守护,不负责定时逻辑:

[Unit]
Description=BlueArchiveToolkit official resource sync
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=bat
Group=bat
ExecStart=/opt/bluearchive-toolkit/bin/bat-official-sync --auto-discover --platforms Windows,Android --output /var/lib/bluearchive-toolkit/official --watch --error-retry 60s
Restart=on-failure
RestartSec=30
StateDirectory=bluearchive-toolkit
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

如果业务层需要热更新、热重载或发布新资源,应该由上层服务在观察到 JSON report 或 snapshot 变化后决定。Rust 同步进程只负责拉取、校验和维护本地状态。


模式 4:完整生产环境部署

待补充(API Server、数据库迁移和 Web 实现后)


数据库备份

手动备份

# PostgreSQL
pg_dump -h your.server.com -U bat_user -d bluearchive_toolkit > backup.sql

# Redis
redis-cli -h your.server.com -p 6379 -a password BGSAVE

自动备份

启动备份服务:

docker compose -f deployments/docker-compose.remote-db.yml --profile backup up -d

备份文件位置:deployments/backups/


监控

查看日志

# 数据库日志
docker logs bat-postgres

# Redis 日志
docker logs bat-redis

健康检查

# 检查容器状态
docker compose -f deployments/docker-compose.remote-db.yml ps

# 检查 PostgreSQL
docker exec bat-postgres pg_isready -U bat_user

# 检查 Redis
docker exec bat-redis redis-cli ping

故障排查

无法连接数据库

  1. 检查防火墙是否开放端口
  2. 检查 pg_hba.conf 配置
  3. 检查密码是否正确
  4. 检查数据库是否启动

性能问题

  1. 查看数据库连接数
  2. 检查慢查询日志
  3. 优化索引
  4. 调整数据库参数

更多当前状态请查看 CURRENT_STATUS.mddocs/reports/CURRENT_GAPS.md 和本文件中的健康检查命令。