4ece85a9c3
- 新增生产环境部署脚本和文档 - 添加监控系统配置(Alertmanager, Prometheus, Grafana) - 更新e2e测试用例以适配新环境 - 添加.env.production配置文件 - 优化Sentry初始化逻辑为动态加载 - 新增全局设置脚本以支持不同环境
7.1 KiB
7.1 KiB
生产环境部署和监控指南
目录
环境准备
系统要求
- 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 DSNNEXTAUTH_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. 访问监控界面
-
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:
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. 服务完全不可用
- 检查服务器状态
- 查看错误日志
- 尝试重启服务
- 如果无法恢复,切换到备用服务器
2. 数据丢失
- 立即停止写入操作
- 从最近的备份恢复
- 验证数据完整性
- 分析丢失原因,防止再次发生
3. 安全事件
- 立即隔离受影响系统
- 收集日志和证据
- 评估影响范围
- 修复安全漏洞
- 恢复服务
- 事后分析
联系方式
- 技术支持: admin@novalon.cn
- 运维团队: ops@novalon.cn
- 开发团队: dev@novalon.cn
附录
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