跳到主要内容

部署指南

欢迎来到 DatomsDBS 部署指南!这里提供了各种环境下的部署方案和最佳实践。

🚀 部署方案

AWS 部署指南

在 AWS 云平台上部署 DatomsDBS:

  • EC2 实例配置
  • RDS 数据库设置
  • 负载均衡配置
  • 安全组设置
  • 监控和日志

AWS EC2 自动化部署

自动化 AWS 部署流程:

  • 自动化脚本配置
  • 基础设施即代码
  • CI/CD 流水线
  • 环境管理
  • 成本优化

AWS EC2 自动化测试

自动化测试和验证:

  • 部署后测试
  • 健康检查脚本
  • 性能测试
  • 故障恢复测试
  • 监控告警

🏗️ 部署架构

单机部署

┌─────────────────┐
│ DatomsDBS │
│ ┌───────────┐ │
│ │ Web │ │
│ │ Server │ │
│ └───────────┘ │
│ ┌───────────┐ │
│ │ DatomsDB │ │
│ │ Database │ │
│ └───────────┘ │
│ ┌───────────┐ │
│ │ Ollama │ │
│ │ AI Model │ │
│ └───────────┘ │
└─────────────────┘

分布式部署

┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│ Load │ │ Application │ │ Database │
│ Balancer │───▶│ Servers │───▶│ Cluster │
│ (Nginx) │ │ (Node.js) │ │ (DatomsDB) │
└─────────────┘ └─────────────┘ └─────────────┘

┌─────────────┐
│ AI Services │
│ (Ollama) │
└─────────────┘

🔧 环境配置

生产环境要求

# 最低配置
CPU: 4 核心
内存: 8GB RAM
存储: 100GB SSD
网络: 1Gbps

# 推荐配置
CPU: 8+ 核心
内存: 16GB+ RAM
存储: 500GB+ SSD
网络: 10Gbps

环境变量配置

# 生产环境配置
NODE_ENV=production
PORT=9000

# 数据库配置
DB_HOST=your-db-host
DB_PORT=5432
DB_NAME=datomsdbs_prod
DB_USER=datomsdbs_user
DB_PASSWORD=secure_password

# AI 配置
OLLAMA_HOST=your-ollama-host
OLLAMA_PORT=11434
DEFAULT_MODEL=llama2

# 安全配置
JWT_SECRET=your-super-secure-jwt-secret
ENCRYPTION_KEY=your-encryption-key

🐳 容器化部署

Docker 部署

# 构建镜像
docker build -t datomsdbs:latest .

# 运行容器
docker run -d \
--name datomsdbs \
-p 9000:9000 \
-e NODE_ENV=production \
-e DB_HOST=your-db-host \
datomsdbs:latest

Docker Compose 部署

version: '3.8'
services:
datomsdbs:
build: .
ports:
- "9000:9000"
environment:
- NODE_ENV=production
- DB_HOST=postgres
depends_on:
- postgres
- ollama

postgres:
image: postgres:13
environment:
- POSTGRES_DB=datomsdbs
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=password
volumes:
- postgres_data:/var/lib/postgresql/data

ollama:
image: ollama/ollama:latest
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama

volumes:
postgres_data:
ollama_data:

☁️ 云平台部署

AWS 部署清单

  • EC2 实例创建和配置
  • RDS 数据库设置
  • S3 存储桶配置
  • VPC 和安全组设置
  • Load Balancer 配置
  • CloudWatch 监控设置
  • Route 53 DNS 配置
  • SSL 证书配置

Azure 部署清单

  • App Service 创建
  • Azure Database 设置
  • Blob Storage 配置
  • Virtual Network 设置
  • Application Gateway 配置
  • Monitor 监控设置
  • DNS Zone 配置
  • Key Vault 密钥管理

GCP 部署清单

  • Compute Engine 实例
  • Cloud SQL 数据库
  • Cloud Storage 配置
  • VPC 网络设置
  • Load Balancer 配置
  • Stackdriver 监控
  • Cloud DNS 配置
  • Secret Manager 配置

🔒 安全配置

网络安全

# 防火墙规则
# 只允许必要端口
ufw allow 22/tcp # SSH
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw allow 9000/tcp # Application
ufw enable

SSL/TLS 配置

server {
listen 443 ssl http2;
server_name your-domain.com;

ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;

location / {
proxy_pass http://localhost:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

📊 监控和日志

监控指标

  • 系统指标: CPU、内存、磁盘、网络
  • 应用指标: 响应时间、吞吐量、错误率
  • 业务指标: 用户活跃度、查询次数、数据量

日志管理

// 生产环境日志配置
const winston = require('winston');

const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.json()
),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});

🔄 备份和恢复

数据备份策略

# 数据库备份
pg_dump -h localhost -U admin datomsdbs > backup_$(date +%Y%m%d).sql

# 文件备份
tar -czf files_backup_$(date +%Y%m%d).tar.gz /path/to/files

# 自动化备份脚本
0 2 * * * /path/to/backup_script.sh

灾难恢复计划

  1. 数据恢复: 从最近备份恢复数据
  2. 服务重启: 重新启动应用服务
  3. 健康检查: 验证系统功能正常
  4. 监控恢复: 确认监控系统正常
  5. 用户通知: 通知用户服务恢复

🚨 故障排除

常见部署问题

端口冲突

# 检查端口占用
netstat -tulpn | grep :9000
lsof -i :9000

# 终止占用进程
kill -9 <PID>

权限问题

# 设置正确权限
chown -R app:app /path/to/app
chmod +x /path/to/app/start.sh

内存不足

# 检查内存使用
free -h
top -p $(pgrep node)

# 增加 swap 空间
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

📞 部署支持

如需部署支持,请: