Environment Configuration
Environment Variable Configuration
The project uses .env file to manage environment variables. Create a .env file in the project root directory, referring to .env.example for configuration.
bash
# Copy environment variable template
cp .env.example .envComplete Environment Variable Description
Database Configuration
| Variable Name | Description | Default Value | Required |
|---|---|---|---|
DB_HOST | Database host address | localhost | Yes |
DB_PORT | Database port | 3306 | Yes |
DB_USER | Database username | root | Yes |
DB_PASSWORD | Database password | - | Yes |
DB_NAME | Database name | nuxt_blog | Yes |
env
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=nuxt_blogRedis Configuration
| Variable Name | Description | Default Value | Required |
|---|---|---|---|
REDIS_URL | Redis connection address | redis://localhost:6379 | Yes |
REDIS_PASSWORD | Redis password | - | No |
CACHE_STORAGE | Cache storage method (redis or file) | redis | No |
env
REDIS_URL=redis://localhost:6379
REDIS_PASSWORD=redispassword
CACHE_STORAGE=redisNote:
- When
CACHE_STORAGEis set tofile, cache will be stored in the file system - Recommended to use
redisin production for better performance
JWT Authentication Configuration
| Variable Name | Description | Default Value | Required |
|---|---|---|---|
JWT_SECRET | JWT signing secret key | - | Yes |
JWT_EXPIRES_IN | Token expiration time | 7d | No |
env
JWT_SECRET=your_jwt_secret_key_here_please_change_in_production
JWT_EXPIRES_IN=7d⚠️ Important:
JWT_SECRETmust be random and confidential string- Use strong passwords in production environment
JWT_EXPIRES_INsupports formats:7d,24h,60m,3600s, etc.
File Storage Configuration
Local Storage
env
# Using local file system storage
# No additional configuration needed, files stored in ./uploads directoryS3 Compatible Storage (MinIO/Alibaba Cloud OSS/Tencent Cloud COS, etc.)
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
# Or using 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=falseEmail Configuration (Optional)
Used for sending password reset emails and other functions.
env
# SMTP email configuration
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your_email@gmail.com
SMTP_PASSWORD=your_app_password
SMTP_FROM=noreply@yourdomain.comApplication Configuration
| Variable Name | Description | Default Value |
|---|---|---|
PORT | Application port | 3000 |
HOST | Listen address | 0.0.0.0 |
NODE_ENV | Runtime environment | development |
env
PORT=3000
HOST=0.0.0.0
NODE_ENV=productionConfiguration Examples
Development Environment
env
# Database configuration
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=root
DB_NAME=nuxt_blog_dev
# Redis configuration
REDIS_URL=redis://localhost:6379
REDIS_PASSWORD=
CACHE_STORAGE=redis
# JWT configuration
JWT_SECRET=dev_jwt_secret_key
JWT_EXPIRES_IN=7d
# Application configuration
PORT=3000
NODE_ENV=developmentProduction Environment
env
# Database configuration
DB_HOST=your-production-db-host
DB_PORT=3306
DB_USER=your_db_user
DB_PASSWORD=strong_password_here
DB_NAME=nuxt_blog
# Redis configuration
REDIS_URL=redis://your-redis-host:6379
REDIS_PASSWORD=strong_redis_password
CACHE_STORAGE=redis
# JWT configuration
JWT_SECRET=very_strong_random_secret_key_at_least_32_chars
JWT_EXPIRES_IN=7d
# S3 storage configuration
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
# Email configuration
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=noreply@yourdomain.com
SMTP_PASSWORD=your_app_password
SMTP_FROM=noreply@yourdomain.com
# Application configuration
PORT=3000
HOST=0.0.0.0
NODE_ENV=productionDocker Environment Configuration
If using Docker deployment, need to modify Redis configuration to connect to Redis service inside container:
env
# Redis configuration (Docker environment)
REDIS_URL=redis://redis:6379
REDIS_PASSWORD=redispasswordConfiguration Validation
After configuration is complete, you can use the following commands to verify if configuration is correct:
bash
# Start development server
pnpm run dev
# Check logs to confirm database and Redis connection successCommon Issues
1. Database Connection Failed
Check the following points:
- MySQL service is running
- Username and password are correct
- Database has been created
- Firewall allows connection
2. Redis Connection Failed
- Ensure Redis service is running
- Check if Redis password is correct
- Confirm port is not blocked by firewall
3. JWT_SECRET Not Set
- Ensure
.envfile hasJWT_SECRETset - Production environment must use strong random string
4. File Upload Failed
- Check if storage configuration is correct
- Ensure upload directory has write permission (local storage)
- Check S3/MinIO configuration is correct (cloud storage)
Security Recommendations
- Never commit
.envfile to version control - Production environment must use strong passwords
- Regularly change keys and passwords
- Use environment variable management tools (such as Docker Secrets, Vault, etc.)
- Limit database and Redis access permissions