作为一名长期从事 AI 应用开发的工程师,我深知环境配置对于项目稳定运行的重要性。今天我将结合自己部署 Dify 平台的实际经验,详细解析其核心环境变量配置,帮助大家避开那些我踩过的坑。
Dify 是一个开源的 AI 应用开发平台,它的环境变量配置相当复杂,涉及 API 服务、数据库、文件存储、向量数据库等多个模块。合理的配置不仅能提升系统性能,更能保障生产环境的安全稳定。
在部署 Dify 时,最先需要配置的就是各类服务地址。这些地址关系到前后端的通信和跨域策略:
env复制# 控制台 API 后端地址
CONSOLE_API_URL=https://api.console.yourdomain.com
# 控制台前端地址
CONSOLE_WEB_URL=https://console.yourdomain.com
# 服务 API 基础地址
SERVICE_API_URL=https://api.yourdomain.com
# WebApp API 后端地址
APP_API_URL=https://api.app.yourdomain.com
关键点说明:
文件服务是 Dify 的重要组件,配置不当会导致文件上传/预览功能失效:
env复制# 文件访问地址(必须外部可访问)
FILES_URL=https://files.yourdomain.com
# Docker 内部文件访问地址
INTERNAL_FILES_URL=http://api:5001
避坑经验:
合理的日志配置对问题排查至关重要:
env复制# 日志级别(生产环境建议 INFO)
LOG_LEVEL=INFO
# 日志格式(JSON 更适合 ELK 收集)
LOG_OUTPUT_FORMAT=json
# 日志文件路径
LOG_FILE=/app/logs/server.log
# 单个日志文件最大 20MB,保留 5 个备份
LOG_FILE_MAX_SIZE=20
LOG_FILE_BACKUP_COUNT=5
安全警告:
env复制DEBUG=false
FLASK_DEBUG=false
ENABLE_REQUEST_LOGGING=False
安全配置是生产环境的生命线:
env复制# 使用 openssl rand -base64 42 生成强密钥
SECRET_KEY=your_strong_secret_key_here
# 管理员初始密码(建议创建后修改)
INIT_PASSWORD=temp_password
# 访问令牌过期时间(分钟)
ACCESS_TOKEN_EXPIRE_MINUTES=60
# 刷新令牌过期时间(天)
REFRESH_TOKEN_EXPIRE_DAYS=30
安全建议:
PostgreSQL 是 Dify 的推荐数据库,需要针对性优化:
env复制# 数据库基础配置
DB_TYPE=postgresql
DB_HOST=db_postgres
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=your_strong_password
DB_DATABASE=dify
# 连接池配置(根据服务器配置调整)
SQLALCHEMY_POOL_SIZE=30
SQLALCHEMY_MAX_OVERFLOW=10
SQLALCHEMY_POOL_RECYCLE=3600
# PostgreSQL 性能参数
POSTGRES_SHARED_BUFFERS=4GB # 25% 内存
POSTGRES_WORK_MEM=16MB # 每个查询工作内存
POSTGRES_MAINTENANCE_WORK_MEM=1GB # 维护操作内存
性能调优经验:
对于生产环境,建议使用 Redis Sentinel 或 Cluster:
env复制# Redis Sentinel 配置示例
REDIS_USE_SENTINEL=true
REDIS_SENTINELS=10.0.0.1:26379,10.0.0.2:26379,10.0.0.3:26379
REDIS_SENTINEL_SERVICE_NAME=mymaster
REDIS_SENTINEL_PASSWORD=your_redis_password
# Celery 使用独立 Redis DB
CELERY_BROKER_URL=redis://:password@redis:6379/1
部署建议:
适合小型部署和开发环境:
env复制STORAGE_TYPE=opendal
OPENDAL_SCHEME=fs
OPENDAL_FS_ROOT=/data/storage
注意事项:
生产环境推荐使用 S3 兼容存储:
env复制# AWS S3 配置示例
STORAGE_TYPE=opendal
OPENDAL_SCHEME=s3
S3_ENDPOINT=https://s3.us-east-1.amazonaws.com
S3_REGION=us-east-1
S3_BUCKET_NAME=dify-prod
S3_ACCESS_KEY=your_access_key
S3_SECRET_KEY=your_secret_key
# 阿里云 OSS 配置示例
OPENDAL_SCHEME=oss
ALIYUN_OSS_BUCKET_NAME=dify-prod
ALIYUN_OSS_ACCESS_KEY=your_key
ALIYUN_OSS_SECRET_KEY=your_secret
ALIYUN_OSS_ENDPOINT=https://oss-cn-hangzhou.aliyuncs.com
最佳实践:
Weaviate 是 Dify 的默认向量数据库:
env复制VECTOR_STORE=weaviate
WEAVIATE_ENDPOINT=http://weaviate:8080
WEAVIATE_API_KEY=your_secure_api_key
WEAVIATE_GRPC_ENDPOINT=grpc://weaviate:50051
性能优化:
PostgreSQL 用户可以选择 PGVector:
env复制VECTOR_STORE=pgvector
PGVECTOR_HOST=pgvector
PGVECTOR_PORT=5432
PGVECTOR_USER=postgres
PGVECTOR_PASSWORD=your_password
PGVECTOR_DATABASE=dify_vector
# 启用 pg_bigm 扩展提升文本搜索性能
PGVECTOR_PG_BIGM=true
部署建议:
Docker 部署时需要优化容器参数:
env复制# API 工作进程数(CPU核心数×2+1)
SERVER_WORKER_AMOUNT=5
# Celery 工作进程数(根据任务量调整)
CELERY_WORKER_AMOUNT=3
# Gunicorn 超时时间(SSE 需要更长时间)
GUNICORN_TIMEOUT=360
监控指标:
常见性能问题及解决方案:
API 响应慢
任务堆积
内存泄漏
env复制WEB_API_CORS_ALLOW_ORIGINS=https://console.yourdomain.com
CONSOLE_CORS_ALLOW_ORIGINS=https://console.yourdomain.com
经过多次生产环境部署实践,我发现 Dify 的配置虽然复杂,但只要理解了各模块的作用和关联,就能构建出稳定高效的 AI 应用平台。建议初次部署时先在小规模环境测试所有功能,再逐步扩展到生产环境。