Skip to content

环境规划

概述

项目支持多环境部署,通过 .env 文件管理各环境的配置差异。合理的环境规划能确保开发、测试、生产环境的隔离性,降低配置错误导致的线上风险。

核心原则

各环境之间保持代码一致,仅通过环境变量(.env)区分配置。禁止在代码中硬编码环境相关的值。

环境划分

环境用途域名示例DEBUG数据库Redis日志级别
Dev(开发)本地开发调试localhost:8000True开发库开发实例DEBUG
Test(测试)功能/集成测试test.example.comFalse测试库测试实例INFO
Prod(生产)正式对外服务www.example.comFalse生产库生产集群WARNING

环境隔离要求

  1. 三个环境的数据库必须完全隔离,禁止共用同一库。
  2. Redis 实例建议分离,避免测试数据污染生产缓存。
  3. 生产环境的 .env 文件权限应设为 600,仅运行用户可读。

.env 配置示例

Dev 环境

bash
# 应用配置
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.elevue

Prod 环境

bash
# 应用配置
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

安全提醒

生产环境的 SECRET_KEY 必须使用随机强密码(推荐 50 位以上),禁止与开发环境共用同一值。可在 application/settings.py 中修改。

环境切换机制

项目通过 extends/extends_dotenv.py 加载 .env 文件,config/env.py 读取环境变量并提供默认值:

python
# config/env.py 中的配置读取方式
DATABASE_ENGINE = os.getenv('DATABASE_ENGINE', "django.db.backends.mysql")
DATABASE_NAME = os.getenv('DATABASE_NAME', 'djangoadmin.django.elevue')
DATABASE_HOST = os.getenv('DATABASE_HOST', "127.0.0.1")

启动时自动读取项目根目录下的 .env 文件,无需额外配置。

Docker 环境

Docker 部署时,docker-compose.yml 通过 env_file: .env 注入环境变量,容器内无需额外配置。详见 Docker容器化 章节。

关键环境变量说明

变量名说明默认值
DJANGO_NAME应用名称(显示在浏览器标题)Django+EleVue旗舰版
DJANGO_VERSION应用版本号v3.0.0
DJANGO_DEBUG调试模式开关True
DJANGO_DEMO演示模式(限制写操作)True
DATABASE_ENGINE数据库引擎django.db.backends.mysql
DATABASE_NAME数据库名称djangoadmin.django.elevue
DATABASE_HOST数据库主机127.0.0.1
DATABASE_PORT数据库端口3306
DATABASE_USER数据库用户名root
DATABASE_PASSWORD数据库密码root
DATABASE_PREFIX数据表前缀django_
REDIS_HOSTRedis 主机127.0.0.1
REDIS_PORTRedis 端口6379
REDIS_PASSWORDRedis 密码123456
REDIS_DBRedis 数据库索引0
DJANGO_FILE_URL文件访问域名http://file.django.elevue
DJANGO_UPLOAD_DIR文件上传目录/public/uploads
IP_LOCATION_SOURCEIP 地理位置来源api
SITE_DOMAIN站点域名http://127.0.0.1:8000

总结

环境规划的核心是隔离与一致性:代码统一,配置分离。通过 .env 文件管理各环境差异,config/env.py 提供默认值。生产环境务必关注安全配置(DEBUG=False、强密码、SECRET_KEY 独立),确保线上服务稳定可靠。

小蚂蚁云团队 · 提供技术支持