189 lines
6.7 KiB
Bash
189 lines
6.7 KiB
Bash
# +======================================================================
|
||
# | 模块: 环境配置文件模板
|
||
# | 说明: 提供完整的 .env 配置示例,包含应用、数据库、缓存、JWT、验证码等
|
||
# +======================================================================
|
||
|
||
# ============================================================
|
||
# 基础配置
|
||
# ============================================================
|
||
|
||
# 应用名称 - 用于界面显示和系统标识
|
||
FASTAPI_NAME=FastAPI+NaiveVue旗舰版
|
||
# 应用版本 - 当前版本号
|
||
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.naivevue.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=<schema用户> 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.naivevue'
|
||
# 数据库账号 - 连接数据库的用户名(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
|
||
|
||
|
||
# ============================================================
|
||
# 邮件配置
|
||
# ============================================================
|
||
|
||
# 邮件传输代理
|
||
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: |