4.3 KiB
4.3 KiB
环境规划
概述
项目支持多环境部署,通过 .env 文件管理各环境的配置差异。合理的环境规划能确保开发、测试、生产环境的隔离性,降低配置错误导致的线上风险。
:::tip 核心原则
各环境之间保持代码一致,仅通过环境变量(.env)区分配置。禁止在代码中硬编码环境相关的值。
:::
环境划分
| 环境 | 用途 | 域名示例 | DEBUG | 数据库 | Redis | 日志级别 |
|---|---|---|---|---|---|---|
| Dev(开发) | 本地开发调试 | localhost:8000 | True | 开发库 | 开发实例 | DEBUG |
| Test(测试) | 功能/集成测试 | test.example.com | False | 测试库 | 测试实例 | INFO |
| Prod(生产) | 正式对外服务 | www.example.com | False | 生产库 | 生产集群 | WARNING |
:::tip 环境隔离要求
- 三个环境的数据库必须完全隔离,禁止共用同一库。
- Redis 实例建议分离,避免测试数据污染生产缓存。
- 生产环境的
.env文件权限应设为600,仅运行用户可读。 :::
.env 配置示例
Dev 环境
# 应用配置
DJANGO_NAME=DjangoAdmin开发版
DJANGO_VERSION=v3.0.0
DJANGO_DEBUG=True
DJANGO_DEMO=False
# 数据库配置
DATABASE_ENGINE=django.db.backends.mysql
DATABASE_NAME=djangoadmin_dev
DATABASE_HOST=127.0.0.1
DATABASE_PORT=3306
DATABASE_USER=root
DATABASE_PASSWORD=root
DATABASE_PREFIX=django_
# Redis 配置
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=123456
REDIS_DB=0
# 文件配置
DJANGO_FILE_URL=http://file.django.naivevue
Prod 环境
# 应用配置
DJANGO_NAME=DjangoAdmin
DJANGO_VERSION=v3.0.0
DJANGO_DEBUG=False
DJANGO_DEMO=False
# 数据库配置
DATABASE_ENGINE=django.db.backends.mysql
DATABASE_NAME=djangoadmin_prod
DATABASE_HOST=10.0.1.100
DATABASE_PORT=3306
DATABASE_USER=djangoadmin
DATABASE_PASSWORD=<强密码>
DATABASE_PREFIX=django_
# Redis 配置
REDIS_HOST=10.0.1.101
REDIS_PORT=6379
REDIS_PASSWORD=<强密码>
REDIS_DB=0
# 文件配置
DJANGO_FILE_URL=https://files.example.com
:::tip 安全提醒
生产环境的 SECRET_KEY 必须使用随机强密码(推荐 50 位以上),禁止与开发环境共用同一值。可在 application/settings.py 中修改。
:::
环境切换机制
项目通过 extends/extends_dotenv.py 加载 .env 文件,config/env.py 读取环境变量并提供默认值:
# config/env.py 中的配置读取方式
DATABASE_ENGINE = os.getenv('DATABASE_ENGINE', "django.db.backends.mysql")
DATABASE_NAME = os.getenv('DATABASE_NAME', 'djangoadmin.django.naivevue')
DATABASE_HOST = os.getenv('DATABASE_HOST', "127.0.0.1")
启动时自动读取项目根目录下的 .env 文件,无需额外配置。
:::tip Docker 环境
Docker 部署时,docker-compose.yml 通过 env_file: .env 注入环境变量,容器内无需额外配置。详见 Docker容器化 章节。
:::
关键环境变量说明
| 变量名 | 说明 | 默认值 |
|---|---|---|
DJANGO_NAME |
应用名称(显示在浏览器标题) | Django+NaiveUI旗舰版 |
DJANGO_VERSION |
应用版本号 | v3.0.0 |
DJANGO_DEBUG |
调试模式开关 | True |
DJANGO_DEMO |
演示模式(限制写操作) | True |
DATABASE_ENGINE |
数据库引擎 | django.db.backends.mysql |
DATABASE_NAME |
数据库名称 | djangoadmin.django.naivevue |
DATABASE_HOST |
数据库主机 | 127.0.0.1 |
DATABASE_PORT |
数据库端口 | 3306 |
DATABASE_USER |
数据库用户名 | root |
DATABASE_PASSWORD |
数据库密码 | root |
DATABASE_PREFIX |
数据表前缀 | django_ |
REDIS_HOST |
Redis 主机 | 127.0.0.1 |
REDIS_PORT |
Redis 端口 | 6379 |
REDIS_PASSWORD |
Redis 密码 | 123456 |
REDIS_DB |
Redis 数据库索引 | 0 |
DJANGO_FILE_URL |
文件访问域名 | http://file.django.naivevue |
DJANGO_UPLOAD_DIR |
文件上传目录 | /public/uploads |
IP_LOCATION_SOURCE |
IP 地理位置来源 | api |
SITE_DOMAIN |
站点域名 | http://127.0.0.1:8000 |
总结
环境规划的核心是隔离与一致性:代码统一,配置分离。通过 .env 文件管理各环境差异,config/env.py 提供默认值。生产环境务必关注安全配置(DEBUG=False、强密码、SECRET_KEY 独立),确保线上服务稳定可靠。