docs: 整理文档结构并创建索引(任务 2.3/20)

This commit is contained in:
张翔
2026-04-12 16:24:51 +08:00
parent 1f52d47ed5
commit 5cd7d48bf2
33 changed files with 1140 additions and 1176 deletions
+374
View File
@@ -0,0 +1,374 @@
# 生产环境部署和监控指南
## 目录
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