# +====================================================================== # | 模块: 环境配置文件模板 # | 说明: 提供完整的 .env 配置示例,包含应用、数据库、缓存、JWT、验证码等 # +====================================================================== # ============================================================ # 基础配置 # ============================================================ # 应用名称 - 用于界面显示和系统标识 FASTAPI_NAME=FastAPI+EleVue旗舰版 # 应用版本 - 当前版本号 FASTAPI_VERSION=v3.0.0 # 应用运行地址 - 服务绑定的IP地址,127.0.0.1表示仅本地访问 FASTAPI_HOST=127.0.0.1 # 应用运行端口 - 服务监听的端口号 FASTAPI_PORT=8031 # 应用启动文件 - 项目入口Python文件 FASTAPI_APP=main.py # 应用环境变量 - 运行环境:development/production/testing FASTAPI_ENV=development # 是否DEBUG模式 - True:开启调试(详细错误日志),False:关闭 FASTAPI_DEBUG=True # 是否DEMO模式 - True:演示模式(限制写操作),False:正常模式 FASTAPI_DEMO=False # 应用文件上传路径 - 用户上传文件的物理存储目录 # 默认取项目根目录下的 uploads # FASTAPI_UPLOAD_DIR=/data/apps/uploads # 文件访问域名 - 文件资源的CDN/访问域名 FASTAPI_FILE_URL='http://images.fastapi.elevue.djangoadmin.cn' # 允许上传的文件扩展名 - 逗号分隔,带点号 # 生产环境务必配置,防止上传.py、.exe、.sh等危险文件 UPLOAD_ALLOWED_EXTS=.jpg,.jpeg,.png,.gif,.bmp,.ico,.txt,.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.mp3,.mp4,.zip,.rar,.7z # 上传文件大小上限(MB)- 超过此大小将被拒绝上传 UPLOAD_MAX_SIZE_MB=10 # ============================================================ # 数据库配置 # ============================================================ # 数据库驱动 - 可选 mysql/postgresql/mssql/oracle/sqlite # 示例: # MySQL: DB_DRIVER=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_USERNAME=root DB_PASSWORD=*** # PostgreSQL: DB_DRIVER=postgresql DB_HOST=127.0.0.1 DB_PORT=5432 DB_USERNAME=postgres DB_PASSWORD=*** # SQL Server: DB_DRIVER=mssql DB_HOST=127.0.0.1 DB_PORT=1433 DB_USERNAME=sa DB_PASSWORD=*** # Oracle: DB_DRIVER=oracle DB_HOST=127.0.0.1 DB_PORT=1521 DB_USERNAME= DB_PASSWORD=*** # (DB_DATABASE 即服务名 service_name,schema 是连接用户) # SQLite: DB_DRIVER=sqlite DB_DATABASE=dev.db(DB_DATABASE 即数据库文件完整路径) DB_DRIVER='mysql' # 数据库地址 - 数据库服务器IP或域名(sqlite 时忽略) DB_HOST='127.0.0.1' # 数据库端口 - MySQL:3306 / PostgreSQL:5432 / SQL Server:1433 / Oracle:1521 DB_PORT=3306 # 数据库名称 - 要连接的数据库名;Oracle 时即服务名 service_name;SQLite 时作为数据库文件路径 DB_DATABASE='djangoadmin.fastapi.elevue' # 数据库账号 - 连接数据库的用户名(sqlite 时忽略) DB_USERNAME='root' # 数据库密码 - 连接数据库的密码(sqlite 时忽略) DB_PASSWORD='root' # 数据表前缀 - 所有数据表统一前缀 DB_PREFIX='fastapi_' # 是否开启调试模式 - True:输出SQL执行日志,False:不输出 DB_DEBUG=True # ============================================================ # 缓存配置 # ============================================================ # 缓存服务地址 - Redis服务器IP或域名 REDIS_HOST='127.0.0.1' # 缓存服务端口 - Redis默认端口6379 REDIS_PORT=6379 # 缓存服务密码 - Redis认证密码(REDIS_AUTH为True时生效) REDIS_PASSWORD="123456" # 缓存库索引 - Redis数据库编号(0-15) REDIS_INDEX=0 # 是否启用用户认证 - True:需要密码验证,False:无需验证 REDIS_AUTH=True # 是否自动解码响应 - True:返回字符串,False:返回字节数据 REDIS_DECODE_RESPONSES=True # ============================================================ # JWT令牌配置 # ============================================================ # JWT密钥 - 用于令牌签名和验证,至少32字节,务必使用强随机密钥 # 生成方式:python -c "import secrets; print(secrets.token_urlsafe(48))" JWT_SALT='VHMlRyV000Tx8xbGtV7k0JG7RhRPE90_oPmUU3c2IzG_3B1ApWIJt1LGLWe83vOG' # JWT令牌过期时间(分钟)- 默认20分钟 JWT_EXPIRE_MINUTES=20 # 登录失败次数上限 - 同一IP+用户名连续失败超过此次数后锁定 LOGIN_FAIL_MAX=5 # 登录锁定时间(秒)- 锁定期间禁止该IP+用户名登录 LOGIN_LOCK_SECONDS=300 # ============================================================ # 验证码配置 # ============================================================ # 验证码字符长度(4-6位) CAPTCHA_LENGTH=6 # 验证码过期时间(秒),默认5分钟 CAPTCHA_EXPIRE=300 # 验证码防刷窗口期(秒) CAPTCHA_RATE_WINDOW=60 # 验证码防刷上限(窗口期内最大获取次数) CAPTCHA_RATE_LIMIT=10 # 验证码字符集(去除易混淆字符) CAPTCHA_CHARS=ABCDEFGHJKLMNPQRSTUVWXYZ2346789 # 验证码字体路径 CAPTCHA_FONT_PATH=static/fonts/Vera.ttf # 验证码图片宽度(像素) CAPTCHA_IMAGE_WIDTH=160 # 验证码图片高度(像素) CAPTCHA_IMAGE_HEIGHT=50 # 验证码字体大小 CAPTCHA_FONT_SIZE=28 # 干扰线数量 CAPTCHA_NOISE_LINES=6 # 噪点数量 CAPTCHA_NOISE_DOTS=30 # ============================================================ # CORS 与代理配置 # ============================================================ # CORS允许的源 - 逗号分隔 CORS_ALLOWED_ORIGINS=http://localhost:8001 # 可信代理层数 - 腾讯云CDN + nginx 两层代理 TRUSTED_PROXY_COUNT=2 # 可信代理IP白名单 - nginx同机部署,信任本机回环地址 TRUSTED_PROXY_IPS=127.0.0.1 # ============================================================ # 邮件配置 # ============================================================ # 邮件传输代理 MAIL_MAILER='smtp' # 邮件服务地址 MAIL_SERVER='smtp.163.com' # 邮件服务端口 MAIL_PORT=465 # 是否启用SSL加密 MAIL_USE_SSL=True # 授权邮箱用户名 MAIL_USERNAME='' # 授权邮箱授权码 MAIL_PASSWORD='' # 邮件加密串 MAIL_ENCRYPTION='' # 邮件发件人名称 MAIL_FROM_NAME='' # 邮件发件人地址 MAIL_FROM_ADDRESS='' # ============================================================ # 短信配置 # ============================================================ # 短信服务地址 SMS_URL='' # 短信服务API密钥 SMS_API_KEY='' # 短信签名 SMS_SIGN='' # 短信模板ID SMS_TEMPLATE_ID='' # ============================================================ # 请求限流(可选,默认关闭) # ============================================================ # 是否启用请求级 IP 限流中间件 # RATE_LIMIT_ENABLED=False # 单窗口内每个 IP 最大请求数 # RATE_LIMIT_LIMIT=100 # 统计窗口时长(秒) # RATE_LIMIT_WINDOW_SECONDS=60 # Redis 计数 key 前缀 # RATE_LIMIT_KEY_PREFIX=rl: