179 lines
6.2 KiB
Bash
179 lines
6.2 KiB
Bash
# +======================================================================
|
||
# | 模块: 环境变量示例文件
|
||
# | 说明: .env.example 模板,复制为 .env 后填写真实值
|
||
# +======================================================================
|
||
|
||
# ============================================================
|
||
# 环境变量示例文件(.env.example)
|
||
# ------------------------------------------------------------
|
||
# 用法:复制为 .env 后填写真实值
|
||
# cp .env.example .env (Windows: copy .env.example .env)
|
||
# 重要:
|
||
# 1. 本文件提交进仓库,只允许占位值,禁止填写任何真实密钥!
|
||
# 2. 真实 .env 已被 .gitignore 忽略,不会进入版本控制。
|
||
# 3. 构建/分发镜像时 .env 被 .dockerignore 排除,
|
||
# 环境变量由运行时注入(docker compose env_file / docker run --env-file)。
|
||
# ============================================================
|
||
|
||
# ============================================================
|
||
# 基础配置
|
||
# ============================================================
|
||
|
||
# 应用名称 - 用于界面显示和系统标识
|
||
FASTAPI_NAME=FastAPI+EleVue旗舰版
|
||
# 应用版本 - 当前版本号
|
||
FASTAPI_VERSION=v3.0.0
|
||
# 应用运行地址 - 127.0.0.1仅本地访问;容器/生产建议 0.0.0.0
|
||
FASTAPI_HOST=0.0.0.0
|
||
# 应用运行端口 - 服务监听的端口号
|
||
FASTAPI_PORT=8031
|
||
# 应用启动文件 - 项目入口Python文件
|
||
FASTAPI_APP=main.py
|
||
# 应用环境变量 - development/production/testing
|
||
FASTAPI_ENV=production
|
||
# 是否DEBUG模式 - 生产务必 False(详细错误日志会泄漏内部信息)
|
||
FASTAPI_DEBUG=False
|
||
# 是否DEMO模式 - True:演示模式(限制写操作),False:正常模式
|
||
FASTAPI_DEMO=False
|
||
# 文件访问域名 - 文件资源的CDN/访问域名(生产请配置真实域名)
|
||
FASTAPI_FILE_URL=http://file.fastapi.elevue
|
||
|
||
# 允许上传的文件扩展名 - 逗号分隔,带点号;生产务必收紧,防止上传危险文件
|
||
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
|
||
# (别名:postgres=postgresql、sqlserver=mssql、sqlite3=sqlite)
|
||
DB_DRIVER=mysql
|
||
# 数据库地址(sqlite 时忽略)
|
||
DB_HOST=127.0.0.1
|
||
# 数据库端口(sqlite 时忽略)
|
||
DB_PORT=3306
|
||
# 数据库名称/库名;DB_DRIVER=sqlite 时作为数据库文件完整路径
|
||
DB_DATABASE=djangoadmin.fastapi.elevue
|
||
# 数据库账号(sqlite 时忽略)
|
||
DB_USERNAME=root
|
||
# 数据库密码 - 必填(sqlite 除外),替换为真实密码
|
||
DB_PASSWORD=CHANGE_ME_DB_PASSWORD
|
||
# 数据表前缀
|
||
DB_PREFIX=fastapi_
|
||
# 是否开启SQL调试日志 - 生产务必 False
|
||
DB_DEBUG=False
|
||
|
||
# ============================================================
|
||
# 缓存配置(Redis)
|
||
# ============================================================
|
||
|
||
# 缓存服务地址
|
||
REDIS_HOST=127.0.0.1
|
||
# 缓存服务端口
|
||
REDIS_PORT=6379
|
||
# 缓存服务密码 - REDIS_AUTH=True 时必填
|
||
REDIS_PASSWORD=CHANGE_ME_REDIS_PASSWORD
|
||
# 缓存库索引(0-15)
|
||
REDIS_INDEX=0
|
||
# 是否启用Redis认证
|
||
REDIS_AUTH=True
|
||
# 是否自动解码响应
|
||
REDIS_DECODE_RESPONSES=True
|
||
|
||
# ============================================================
|
||
# JWT令牌配置
|
||
# ============================================================
|
||
|
||
# JWT签名密钥 - 必填,至少32字节强随机值;留空应用会拒绝启动(fail-close)
|
||
# 生成方式:python -c "import secrets; print(secrets.token_urlsafe(48))"
|
||
JWT_SALT=
|
||
# JWT令牌过期时间(分钟)
|
||
JWT_EXPIRE_MINUTES=20
|
||
# 登录失败次数上限(防暴力破解)
|
||
LOGIN_FAIL_MAX=5
|
||
# 登录锁定时间(秒)
|
||
LOGIN_LOCK_SECONDS=300
|
||
|
||
# ============================================================
|
||
# 验证码配置
|
||
# ============================================================
|
||
|
||
# 验证码字符长度(4-6位)
|
||
CAPTCHA_LENGTH=6
|
||
# 验证码过期时间(秒)
|
||
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允许的源 - 逗号分隔,如 http://localhost:8001,https://admin.example.com
|
||
CORS_ALLOWED_ORIGINS=http://localhost:8001
|
||
# 可信代理层数 - 0=不信任X-Forwarded-For;仅部署在Nginx等反代后才设>=1
|
||
TRUSTED_PROXY_COUNT=1
|
||
# 可信代理IP白名单(逗号分隔)- nginx同机部署填127.0.0.1;有CDN且动态边缘IP填0.0.0.0
|
||
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=CHANGE_ME_MAIL_USERNAME
|
||
# 授权邮箱授权码
|
||
MAIL_PASSWORD=CHANGE_ME_MAIL_PASSWORD
|
||
# 邮件加密串(可选)
|
||
MAIL_ENCRYPTION=
|
||
# 邮件发件人名称
|
||
MAIL_FROM_NAME=
|
||
# 邮件发件人地址
|
||
MAIL_FROM_ADDRESS=
|
||
|
||
# ============================================================
|
||
# 短信配置(阿里云短信服务)
|
||
# ============================================================
|
||
|
||
# 短信服务地址
|
||
SMS_URL=
|
||
# 短信服务API密钥
|
||
SMS_API_KEY=
|
||
# 短信签名
|
||
SMS_SIGN=
|
||
# 短信模板ID
|
||
SMS_TEMPLATE_ID=
|
||
|
||
# ============================================================
|
||
# 请求限流(可选,默认关闭)
|
||
# ============================================================
|
||
# RATE_LIMIT_ENABLED=False
|
||
# RATE_LIMIT_LIMIT=100
|
||
# RATE_LIMIT_WINDOW_SECONDS=60
|
||
# RATE_LIMIT_KEY_PREFIX=rl: |