# 生产环境部署和监控指南 ## 目录 1. [环境准备](#环境准备) 2. [部署流程](#部署流程) 3. [监控配置](#监控配置) 4. [告警配置](#告警配置) 5. [维护和运维](#维护和运维) ## 环境准备 ### 系统要求 - Linux/Unix 服务器(推荐 Ubuntu 22.04+) - Node.js 18+ - Docker 和 Docker Compose - 至少 2GB RAM - 至少 10GB 磁盘空间 ### 必需的软件 ```bash # 安装 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. 配置环境变量 复制并编辑生产环境配置: ```bash cp .env.production .env.local ``` 更新以下关键配置: - `RESEND_API_KEY`: Resend API 密钥 - `NEXT_PUBLIC_SENTRY_DSN`: Sentry DSN - `NEXTAUTH_SECRET`: 认证密钥 - `ADMIN_PASSWORD`: 管理员密码 ### 2. 运行部署脚本 ```bash chmod +x scripts/deploy-production.sh ./scripts/deploy-production.sh ``` ### 3. 验证部署 访问以下URL验证部署: - 网站: http://localhost:3000 - 健康检查: http://localhost:3000/api/health - 管理后台: http://localhost:3000/admin ## 监控配置 ### 1. 启动监控服务 ```bash chmod +x scripts/setup-monitoring.sh ./scripts/setup-monitoring.sh docker-compose -f docker-compose.monitoring.yml up -d ``` ### 2. 访问监控界面 - **Prometheus**: http://localhost:9090 - 查看指标和查询数据 - 默认用户名: admin - 默认密码: admin - **Grafana**: http://localhost:3001 - 查看仪表板和可视化 - 默认用户名: admin - 默认密码: admin - **Alertmanager**: http://localhost:9093 - 查看和管理告警 - 配置通知路由 ### 3. 关键指标 #### 应用指标 - HTTP 请求数量 - 响应时间(P50, P95, P99) - 错误率(4xx, 5xx) - 并发连接数 #### 系统指标 - CPU 使用率 - 内存使用率 - 磁盘 I/O - 网络流量 #### 业务指标 - 用户注册数 - 联系表单提交数 - 页面访问量 - 转化率 ## 告警配置 ### 告警规则 #### 严重告警 (Critical) - **服务不可用**: 服务停止响应超过 1 分钟 - **高错误率**: 5xx 错误率超过 5% 持续 5 分钟 - **响应时间过长**: P95 响应时间超过 1 秒持续 5 分钟 #### 警告告警 (Warning) - **性能下降**: P95 响应时间超过 500ms - **资源使用高**: CPU 或内存使用率超过 80% - **磁盘空间不足**: 可用磁盘空间低于 20% ### 通知渠道 #### 邮件通知 - 严重告警: admin@novalon.cn, ops@novalon.cn - 警告告警: dev@novalon.cn - 默认通知: admin@novalon.cn #### 配置邮件服务 编辑 `monitoring/alertmanager.yml`: ```yaml 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. 日志管理 ```bash # 查看应用日志 tail -f logs/app.log # 查看错误日志 grep "ERROR" logs/app.log # 清理旧日志 find logs/ -name "*.log" -mtime +7 -delete ``` #### 2. 数据库备份 ```bash # 手动备份 ./scripts/backup.sh # 设置定时备份 crontab -e # 添加以下行(每天凌晨 2 点备份) 0 2 * * * /path/to/scripts/backup.sh ``` #### 3. 监控检查 ```bash # 检查服务状态 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. 服务无法启动 ```bash # 检查端口占用 netstat -tulpn | grep :3000 # 检查日志 tail -f logs/app.log # 重启服务 npm start ``` #### 2. 性能问题 ```bash # 检查系统资源 top htop # 检查数据库性能 sqlite3 data/prod.db "EXPLAIN QUERY PLAN SELECT * FROM ..." # 查看慢查询 tail -f logs/slow-query.log ``` #### 3. 数据恢复 ```bash # 恢复数据库 ./scripts/restore.sh /path/to/backup/backup_YYYYMMDD_HHMMSS.tar.gz ``` ### 更新部署 #### 1. 零停机部署 ```bash # 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. 回滚 ```bash # 回滚到上一个版本 rm -rf dist mv dist_backup dist # 重启服务 pm2 restart all ``` ### 安全加固 #### 1. 防火墙配置 ```bash # 只允许必要端口 ufw allow 22/tcp # SSH ufw allow 80/tcp # HTTP ufw allow 443/tcp # HTTPS ufw enable ``` #### 2. SSL/TLS 配置 ```bash # 使用 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. 定期更新 ```bash # 更新系统包 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. 事后分析 ## 联系方式 - **运维告警**: ops@novalon.cn - **业务咨询**: contact@novalon.cn ## 附录 ### A. 常用命令 ```bash # 查看服务状态 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