环境配置
环境变量配置
项目使用 .env 文件管理环境变量。在项目根目录创建 .env 文件,参考 .env.example 进行配置。
bash
# 复制环境变量模板
cp .env.example .env完整环境变量说明
数据库配置
| 变量名 | 说明 | 默认值 | 必填 |
|---|---|---|---|
DB_HOST | 数据库主机地址 | localhost | 是 |
DB_PORT | 数据库端口 | 3306 | 是 |
DB_USER | 数据库用户名 | root | 是 |
DB_PASSWORD | 数据库密码 | - | 是 |
DB_NAME | 数据库名称 | nuxt_blog | 是 |
env
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=nuxt_blogRedis 配置
| 变量名 | 说明 | 默认值 | 必填 |
|---|---|---|---|
REDIS_URL | Redis 连接地址 | redis://localhost:6379 | 是 |
REDIS_PASSWORD | Redis 密码 | - | 否 |
CACHE_STORAGE | 缓存存储方式 (redis 或 file) | redis | 否 |
env
REDIS_URL=redis://localhost:6379
REDIS_PASSWORD=redispassword
CACHE_STORAGE=redis注意:
CACHE_STORAGE设置为file时,缓存将存储在文件系统中- 推荐生产环境使用
redis以获得更好的性能
JWT 认证配置
| 变量名 | 说明 | 默认值 | 必填 |
|---|---|---|---|
JWT_SECRET | JWT 签名密钥 | - | 是 |
JWT_EXPIRES_IN | Token 过期时间 | 7d | 否 |
env
JWT_SECRET=your_jwt_secret_key_here_please_change_in_production
JWT_EXPIRES_IN=7d⚠️ 重要提示:
JWT_SECRET必须是随机且保密的字符串- 生产环境务必使用强密码
JWT_EXPIRES_IN支持格式:7d,24h,60m,3600s等
文件存储配置
本地存储
env
# 使用本地文件系统存储
# 无需额外配置,文件存储在 ./uploads 目录S3 兼容存储(MinIO/阿里云 OSS/腾讯云 COS 等)
env
# AWS S3 / MinIO
STORAGE_TYPE=s3
S3_REGION=us-east-1
S3_ACCESS_KEY_ID=your_access_key
S3_SECRET_ACCESS_KEY=your_secret_key
S3_BUCKET_NAME=uploads
S3_ENDPOINT=https://s3.example.com
# 或使用 MinIO
S3_REGION=us-east-1
S3_ACCESS_KEY_ID=minioadmin
S3_SECRET_ACCESS_KEY=minioadmin
S3_BUCKET_NAME=uploads
S3_ENDPOINT=http://localhost:9000
S3_USE_SSL=false邮件配置(可选)
用于发送密码重置邮件等功能。
env
# SMTP 邮件配置
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your_email@gmail.com
SMTP_PASSWORD=your_app_password
SMTP_FROM=noreply@yourdomain.com应用配置
| 变量名 | 说明 | 默认值 |
|---|---|---|
PORT | 应用端口 | 3000 |
HOST | 监听地址 | 0.0.0.0 |
NODE_ENV | 运行环境 | development |
env
PORT=3000
HOST=0.0.0.0
NODE_ENV=production配置示例
开发环境
env
# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=root
DB_NAME=nuxt_blog_dev
# Redis配置
REDIS_URL=redis://localhost:6379
REDIS_PASSWORD=
CACHE_STORAGE=redis
# JWT配置
JWT_SECRET=dev_jwt_secret_key
JWT_EXPIRES_IN=7d
# 应用配置
PORT=3000
NODE_ENV=development生产环境
env
# 数据库配置
DB_HOST=your-production-db-host
DB_PORT=3306
DB_USER=your_db_user
DB_PASSWORD=strong_password_here
DB_NAME=nuxt_blog
# Redis配置
REDIS_URL=redis://your-redis-host:6379
REDIS_PASSWORD=strong_redis_password
CACHE_STORAGE=redis
# JWT配置
JWT_SECRET=very_strong_random_secret_key_at_least_32_chars
JWT_EXPIRES_IN=7d
# S3存储配置
STORAGE_TYPE=s3
S3_REGION=us-east-1
S3_ACCESS_KEY_ID=your_aws_access_key
S3_SECRET_ACCESS_KEY=your_aws_secret_key
S3_BUCKET_NAME=your-bucket-name
S3_ENDPOINT=https://s3.amazonaws.com
# 邮件配置
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=noreply@yourdomain.com
SMTP_PASSWORD=your_app_password
SMTP_FROM=noreply@yourdomain.com
# 应用配置
PORT=3000
HOST=0.0.0.0
NODE_ENV=productionDocker 环境配置
如果使用 Docker 部署,需要修改 Redis 配置以连接容器内的 Redis 服务:
env
# Redis配置(Docker环境)
REDIS_URL=redis://redis:6379
REDIS_PASSWORD=redispassword配置验证
配置完成后,可以使用以下命令验证配置是否正确:
bash
# 启动开发服务器
pnpm run dev
# 查看日志,确认数据库和 Redis 连接成功常见问题
1. 数据库连接失败
检查以下几点:
- MySQL 服务是否正在运行
- 用户名和密码是否正确
- 数据库是否已创建
- 防火墙是否允许连接
2. Redis 连接失败
- 确保 Redis 服务正在运行
- 检查 Redis 密码是否正确
- 确认端口没有被防火墙阻止
3. JWT_SECRET 未设置
- 确保
.env文件中已设置JWT_SECRET - 生产环境必须使用强随机字符串
4. 文件上传失败
- 检查存储配置是否正确
- 确保上传目录有写入权限(本地存储)
- 检查 S3/MinIO 配置是否正确(云存储)
安全建议
- 永远不要将
.env文件提交到版本控制 - 生产环境必须使用强密码
- 定期更换密钥和密码
- 使用环境变量管理工具(如 Docker Secrets、Vault 等)
- 限制数据库和 Redis 的访问权限