Files
easygoadmin-wiki/EasyGoAdmin_GoFrame_AntdVue/zh/deploy/env-plan.md
T
2026-10-20 21:53:26 +08:00

69 lines
3.0 KiB
Markdown
Raw 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.
# 11.2 环境规划
:::tip 概述
推荐三套环境(开发/测试/生产)+ 环境差异经 GF_ 环境变量覆盖(不改配置文件)。本节给出环境矩阵、资源配置参考与拓扑。
:::
## 环境矩阵
| 环境 | 用途 | 后端 | 数据库 | Redis |
|------|------|------|--------|-------|
| 开发 dev | 本地开发 | go run / bin | 本地 MySQL | 本地 Redis |
| 测试 test | 联调/冒烟 | 独立部署 | 独立库 | 独立实例/db |
| 生产 prod | 对外服务 | 多实例可选 | 主从/云 RDS | 集群/云 Redis |
## 部署拓扑
```text
┌──────────────────────────────────────────┐
│ 生产网络(内网) │
用户 ──443──▶ │ nginx/前置代理(HTTPS 终止 + 静态 + 反代) │
│ │ │
│ ├── admin-server ×N(:8000,优雅重启) │
│ ├── MySQL 主从(或云 RDS) │
│ └── Redis(集群/云,密码强记) │
└──────────────────────────────────────────┘
文件:uploadDir 独立持久卷/共享存储(多实例需共享或对象存储改造)
归属地:manifest/data/ip2region.xdb 随二进制分发
```
## 环境差异管理(GF_ 覆盖)
```sh
# 容器/进程管理器注入环境变量,不改配置文件
GF_DATABASE_DEFAULT_LINK="mysql:user:secret@tcp(db:3306)/easygoadmin?charset=utf8mb4&parseTime=true"
GF_REDIS_DEFAULT_ADDRESS="redis:6379"
GF_JWT_SECRET="prod-only-random-secret"
GF_APP_ERRORMSG="false"
```
原则:**同份二进制 + 不同环境变量 = 不同环境**;密钥类只走环境变量(不进配置文件/镜像层)。
## 资源配置参考
| 环境 | CPU | 内存 | 磁盘 | 说明 |
|------|-----|------|------|------|
| 开发 | 2 核 | 4 GB | 50 GB | 本机 MySQL/Redis 共享 |
| 测试 | 2 核 | 4 GB | 100 GB | 独立服务 |
| 生产(中小) | 4 核 | 8 GB | 200 GB+ | 单实例 + 数据库独立 |
| 生产(多实例) | 2 核 × N | 4 GB × N | — | Redis 必须可用(限流/锁共享) |
## 多实例注意事项
```text
必须共享 Redis(否则以下能力退化单机语义):
限流计数 / 任务执行锁(job:lock)/ JWT 黑名单 / 在线用户 / 验证码 / 字典缓存
上传目录:多实例需共享存储(NFS/OSS 改造)——两段式 Rename 在共享卷语义下正常
定时任务:策略 2/3 经 Redis 锁互斥(各实例都会 tick,抢锁失败放弃)
数据库连接池:按实例数 × pool 配置核算数据库 max_connections
```
## 时区与时间
```text
app.timezone: "Asia/Shanghai" 应用时区
数据库连接 loc=Local / 服务器时区保持一致
定时任务 cron 按应用时区调度——跨时区部署注意
```