Files
novalon-website/docs/deployment/PRODUCTION_DEPLOYMENT.md
T

7.1 KiB
Raw Blame History

生产环境部署和监控指南

目录

  1. 环境准备
  2. 部署流程
  3. 监控配置
  4. 告警配置
  5. 维护和运维

环境准备

系统要求

  • Linux/Unix 服务器(推荐 Ubuntu 22.04+
  • Node.js 18+
  • Docker 和 Docker Compose
  • 至少 2GB RAM
  • 至少 10GB 磁盘空间

必需的软件

# 安装 Node.js
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

# 安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

部署流程

1. 配置环境变量

复制并编辑生产环境配置:

cp .env.production .env.local

更新以下关键配置:

  • RESEND_API_KEY: Resend API 密钥
  • NEXT_PUBLIC_SENTRY_DSN: Sentry DSN
  • NEXTAUTH_SECRET: 认证密钥
  • ADMIN_PASSWORD: 管理员密码

2. 运行部署脚本

chmod +x scripts/deploy-production.sh
./scripts/deploy-production.sh

3. 验证部署

访问以下URL验证部署:

监控配置

1. 启动监控服务

chmod +x scripts/setup-monitoring.sh
./scripts/setup-monitoring.sh

docker-compose -f docker-compose.monitoring.yml up -d

2. 访问监控界面

3. 关键指标

应用指标

  • HTTP 请求数量
  • 响应时间(P50, P95, P99
  • 错误率(4xx, 5xx
  • 并发连接数

系统指标

  • CPU 使用率
  • 内存使用率
  • 磁盘 I/O
  • 网络流量

业务指标

  • 用户注册数
  • 联系表单提交数
  • 页面访问量
  • 转化率

告警配置

告警规则

严重告警 (Critical)

  • 服务不可用: 服务停止响应超过 1 分钟
  • 高错误率: 5xx 错误率超过 5% 持续 5 分钟
  • 响应时间过长: P95 响应时间超过 1 秒持续 5 分钟

警告告警 (Warning)

  • 性能下降: P95 响应时间超过 500ms
  • 资源使用高: CPU 或内存使用率超过 80%
  • 磁盘空间不足: 可用磁盘空间低于 20%

通知渠道

邮件通知

配置邮件服务

编辑 monitoring/alertmanager.yml:

email_configs:
  - to: 'admin@novalon.cn'
    from: 'alertmanager@novalon.cn'
    smarthost: 'smtp.resend.com:587'
    auth_username: 'resend'
    auth_password: 'your_resend_api_key'
    require_tls: true

维护和运维

日常维护

1. 日志管理

# 查看应用日志
tail -f logs/app.log

# 查看错误日志
grep "ERROR" logs/app.log

# 清理旧日志
find logs/ -name "*.log" -mtime +7 -delete

2. 数据库备份

# 手动备份
./scripts/backup.sh

# 设置定时备份
crontab -e
# 添加以下行(每天凌晨 2 点备份)
0 2 * * * /path/to/scripts/backup.sh

3. 监控检查

# 检查服务状态
docker-compose -f docker-compose.monitoring.yml ps

# 查看监控日志
docker-compose -f docker-compose.monitoring.yml logs -f

# 重启监控服务
docker-compose -f docker-compose.monitoring.yml restart

故障处理

1. 服务无法启动

# 检查端口占用
netstat -tulpn | grep :3000

# 检查日志
tail -f logs/app.log

# 重启服务
npm start

2. 性能问题

# 检查系统资源
top
htop

# 检查数据库性能
sqlite3 data/prod.db "EXPLAIN QUERY PLAN SELECT * FROM ..."

# 查看慢查询
tail -f logs/slow-query.log

3. 数据恢复

# 恢复数据库
./scripts/restore.sh /path/to/backup/backup_YYYYMMDD_HHMMSS.tar.gz

更新部署

1. 零停机部署

# 1. 构建新版本
npm run build

# 2. 备份当前版本
cp -r dist dist_backup

# 3. 替换新版本
rm -rf dist
mv dist_new dist

# 4. 重启服务(优雅重启)
pm2 restart all
# 或
kill -HUP $(cat pidfile)

2. 回滚

# 回滚到上一个版本
rm -rf dist
mv dist_backup dist

# 重启服务
pm2 restart all

安全加固

1. 防火墙配置

# 只允许必要端口
ufw allow 22/tcp    # SSH
ufw allow 80/tcp    # HTTP
ufw allow 443/tcp   # HTTPS
ufw enable

2. SSL/TLS 配置

# 使用 Let's Encrypt 获取免费证书
certbot certonly --webroot -w /var/www/html -d www.novalon.cn

# 配置 Nginx
server {
    listen 443 ssl;
    server_name www.novalon.cn;

    ssl_certificate /etc/letsencrypt/live/www.novalon.cn/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.novalon.cn/privkey.pem;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

3. 定期更新

# 更新系统包
sudo apt update && sudo apt upgrade -y

# 更新 Node.js 依赖
npm audit fix
npm update

# 更新 Docker 镜像
docker-compose -f docker-compose.monitoring.yml pull
docker-compose -f docker-compose.monitoring.yml up -d

性能优化

1. 应用优化

  • 启用 gzip 压缩
  • 配置 CDN
  • 优化图片和静态资源
  • 使用 Redis 缓存

2. 数据库优化

  • 创建适当的索引
  • 定期清理旧数据
  • 优化查询语句
  • 使用连接池

3. 服务器优化

  • 调整内核参数
  • 配置 swap
  • 优化文件系统
  • 使用 SSD 存储

应急预案

1. 服务完全不可用

  1. 检查服务器状态
  2. 查看错误日志
  3. 尝试重启服务
  4. 如果无法恢复,切换到备用服务器

2. 数据丢失

  1. 立即停止写入操作
  2. 从最近的备份恢复
  3. 验证数据完整性
  4. 分析丢失原因,防止再次发生

3. 安全事件

  1. 立即隔离受影响系统
  2. 收集日志和证据
  3. 评估影响范围
  4. 修复安全漏洞
  5. 恢复服务
  6. 事后分析

联系方式

附录

A. 常用命令

# 查看服务状态
systemctl status novalon-website

# 重启服务
systemctl restart novalon-website

# 查看日志
journalctl -u novalon-website -f

# 检查磁盘空间
df -h

# 检查内存使用
free -h

# 检查进程
ps aux | grep node

B. 配置文件位置

  • 应用配置: /etc/novalon-website/
  • 日志文件: /var/log/novalon-website/
  • 数据文件: /var/lib/novalon-website/
  • 备份文件: /var/backups/novalon-website/

C. 监控端口

  • 应用服务: 3000
  • Prometheus: 9090
  • Grafana: 3001
  • Alertmanager: 9093