69 lines
3.0 KiB
Markdown
69 lines
3.0 KiB
Markdown
# 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 按应用时区调度——跨时区部署注意
|
||
```
|