🚀 DMS 环境配置使用指南

Development & Production Environment Configuration Guide

目录结构

📁 项目文件结构
C:\DMS\
├── .env                          # 当前使用的配置文件(不要提交到Git)
├── .env.development              # 开发环境配置模板(可以提交到Git)
├── .env.production.template      # 生产环境配置模板(可以提交到Git)
├── config/
│   └── env.py                    # 环境变量加载和解析逻辑
├── application/
│   └── settings.py               # Django设置(从config.env导入配置)
├── switch_env.ps1                # 环境切换脚本
├── validate_config.py            # 配置验证脚本
└── .gitignore                    # Git忽略规则

快速开始

1️⃣ 切换到开发环境

💻 PowerShell 命令
# 在项目根目录执行
.\switch_env.ps1 development
运行后会显示:
========================================
  DMS Environment Switch Tool
========================================

[OK] Backed up current config: C:\DMS\.env.backup.20260416_151622
[OK] Switched to: Development Environment
[INFO] Config file: C:\DMS\.env

[WARNING] Please restart Django service to apply changes

Verify configuration:
   python validate_config.py
效果说明:
  • 自动备份:如果存在旧的 .env 文件,会自动备份为 .env.backup.日期时间 格式
  • 完全复制.env.development 的内容会完全复制.env,两个文件内容一模一样
  • 彩色提示:成功信息用绿色显示,警告用黄色显示
  • 需要重启:修改后必须重启 Django 服务才能生效

2️⃣ 准备生产环境

💻 PowerShell 命令
# 复制生产环境模板
.\switch_env.ps1 production

# 编辑 .env 文件,修改所有敏感信息
notepad .env
运行后会显示:
========================================
  DMS Environment Switch Tool
========================================

[OK] Backed up current config: C:\DMS\.env.backup.20260416_151622
[OK] Switched to: Production Environment (Template)
[INFO] Config file: C:\DMS\.env

[WARNING] Important Notes:
   1. Please edit .env file and modify all sensitive information
   2. Generate strong keys for DJANGO_SECRET_KEY and JWT_SECRET_KEY
   3. Update database configuration with production values

Commands to generate strong keys:
   Django: python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
   JWT:    python -c "import secrets; print(secrets.token_urlsafe(43))"

[WARNING] Please restart Django service to apply changes

Verify configuration:
   python validate_config.py
效果说明:
  • 自动备份:同样会备份旧的 .env 文件
  • 复制模板.env.production.template 的内容会完全复制.env
  • 重要提示:显示必须修改的配置项和生成密钥的命令
  • 需要修改:复制后必须编辑 .env 文件,修改所有占位符和敏感信息
必须修改的配置:
  • DJANGO_SECRET_KEY - 生成强密钥
  • JWT_SECRET_KEY - 生成强密钥
  • DB_PASSWORD - 设置数据库密码
  • DJANGO_ALLOWED_HOSTS - 指定正式域名
  • DB_HOST - 生产数据库服务器地址
  • DB_USER - 不要用 root

生成强密钥的命令:

🔑 密钥生成命令
# Django SECRET_KEY
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"

# JWT SECRET_KEY
python -c "import secrets; print(secrets.token_urlsafe(43))"

3️⃣ 验证配置

✅ 配置验证
python validate_config.py
验证脚本会检查:
  • 必需的密钥是否配置
  • DEBUG 模式是否正确
  • 数据库配置是否安全
  • 报警配置是否合理

配置文件说明

.env - 当前使用的配置

这是实际被系统读取的配置文件。

重要规则:
  • 永远不要将此文件提交到 Git
  • 每次修改后需要重启 Django 服务
  • 可以使用 switch_env.ps1 快速切换

.env.development - 开发环境模板

开发环境的推荐配置:

  • DJANGO_DEBUG=true - 显示详细错误信息
  • ENABLE_MAIL_ALARM=false - 关闭邮件报警
  • ENABLE_SMS_ALARM=false - 关闭短信报警
  • DB_NAME=dms_dev - 使用独立的开发数据库

.env.production.template - 生产环境模板

生产环境的配置模板(需要修改后才能使用):

  • DJANGO_DEBUG=false - 隐藏敏感信息
  • DJANGO_ALLOWED_HOSTS=your-domain.com - 明确指定域名
  • ENABLE_MAIL_ALARM=true - 启用报警
  • DB_USER=dms_user - 使用专用数据库用户

配置项详解

基础配置

变量名 说明 开发环境 生产环境
DJANGO_DEBUG 调试模式 true false
DJANGO_ALLOWED_HOSTS 允许的域名 localhost,127.0.0.1,* example.com,www.example.com
DJANGO_SECRET_KEY Django密钥 可用默认值 必须修改
JWT_SECRET_KEY JWT密钥 可用默认值 必须修改

数据库配置

变量名 说明 示例
DB_ENGINE 数据库引擎 django.db.backends.mysql
DB_NAME 数据库名称 dms_datasource
DB_HOST 数据库主机 127.0.0.1db.example.com
DB_PORT 数据库端口 3306
DB_USER 数据库用户 root(开发)或 dms_user(生产)
DB_PASSWORD 数据库密码 务必使用强密码
TABLE_PREFIX 表前缀 django_

应用配置

变量名 说明 开发环境 生产环境
IS_DEMO_MODE 演示模式 false false
CFR_ENABLED CFR审计追踪 true false

报警配置

变量名 说明 开发环境 生产环境
ALARM_REPEAT_INTERVAL 重复报警间隔(分钟) 120 60
ENABLE_MAIL_ALARM 邮件报警 false true
ENABLE_SMS_ALARM 短信报警 false true/false
ENABLE_API_ALARM API报警 false true/false
ALARM_TIME_WINDOW_HOURS 报警时间窗口(小时) 24 8
ALARM_API_URL API报警地址 测试地址 正式地址

环境切换流程

场景1:从开发切换到生产

1 备份当前配置(自动完成)
2 复制生产模板
.\switch_env.ps1 production
3 编辑配置文件
notepad .env
4 修改以下关键配置:
  • DJANGO_SECRET_KEY (生成新密钥)
  • JWT_SECRET_KEY (生成新密钥)
  • DB_PASSWORD (设置强密码)
  • DJANGO_ALLOWED_HOSTS (指定域名)
  • DB_HOST (生产数据库地址)
5 验证配置
python validate_config.py
6 重启服务

(根据你的部署方式重启)

场景2:从生产切换到开发

1 切换回开发环境
.\switch_env.ps1 development
2 验证配置
python validate_config.py
3 重启服务

安全注意事项

✅ 应该做的

1. 保护 .env 文件

  • 不要通过邮件、聊天工具发送
  • 不要上传到公开代码仓库
  • 使用文件权限限制访问

2. 使用强密钥和密码

🔐 生成强密钥和密码
# 生成 Django SECRET_KEY
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"

# 生成 JWT SECRET_KEY
python -c "import secrets; print(secrets.token_urlsafe(43))"

# 生成随机密码(16字符)
python -c "import secrets; import string; chars = string.ascii_letters + string.digits + '!@#$%^&*'; print(''.join(secrets.choice(chars) for _ in range(16)))"

3. 定期轮换密钥

  • 建议每 3-6 个月更换一次密钥
  • 员工离职后立即更换

4. 使用不同的数据库用户

  • 开发环境:可以用 root(仅限本地)
  • 生产环境:创建专用用户,只授予必要权限

❌ 不应该做的

1. 不要硬编码敏感信息

❌ 错误示例 vs ✅ 正确示例
# ❌ 错误
DATABASE_PASSWORD = "my_password_123"

# ✅ 正确
DATABASE_PASSWORD = os.environ.get('DB_PASSWORD', 'default')

2. 不要在生产环境使用 DEBUG=True

  • 会泄露敏感信息
  • 性能较差

3. 不要在生产环境使用 ALLOWED_HOSTS='*'

  • 存在安全风险
  • 应明确指定允许的域名

4. 不要将 .env 提交到 Git

  • 已配置在 .gitignore
  • 但要定期检查确保没有意外提交

故障排查

问题1:修改 .env 后没有生效

原因:Django 启动时加载配置,修改后需要重启
解决:
# 重启 Django 服务
# 如果是用 manage.py runserver
Ctrl+C 停止,然后重新启动

# 如果是用 gunicorn 或其他 WSGI 服务器
# 重启对应的服务

问题2:validate_config.py 报错

常见错误及解决:

1. Django密钥使用默认值
# 生成新密钥并更新 .env
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
# 复制输出,替换 .env 中的 DJANGO_SECRET_KEY
2. 数据库密码未配置
# 编辑 .env 文件
notepad .env
# 修改 DB_PASSWORD=your_strong_password
3. ALLOWED_HOSTS='*' 在生产环境
# 编辑 .env 文件
notepad .env
# 修改为:DJANGO_ALLOWED_HOSTS=example.com,www.example.com

问题3:无法连接到数据库

检查步骤:
# 1. 验证配置
python validate_config.py

# 2. 检查数据库服务是否运行
# MySQL: services.msc 查看 MySQL 服务状态

# 3. 测试数据库连接
python -c "import MySQLdb; conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='your_password', db='dms_datasource'); print('连接成功'); conn.close()"

📚 相关文档


💡 最佳实践总结

1. 开发环境

  • 使用 .env.development 作为模板
  • 开启 DEBUG 模式便于调试
  • 关闭不必要的报警功能
  • 使用本地数据库

2. 生产环境

  • 使用 .env.production.template 作为起点
  • 必须修改所有密钥和密码
  • 关闭 DEBUG 模式
  • 明确指定 ALLOWED_HOSTS
  • 启用必要的报警功能
  • 使用专用数据库用户

3. 日常维护

  • 定期运行 validate_config.py 检查配置
  • 修改配置后记得重启服务
  • 定期轮换密钥
  • 备份 .env 文件到安全位置

📅 最后更新: 2026-04-04   |   📦 版本: 1.0

环境监测

PM2.5/10、温湿度、有害气体等实时监测