Files
niumalll/docs/部署运维指南.md

434 lines
8.3 KiB
Markdown
Raw Normal View History

# 活牛采购智能数字化系统 - 部署运维指南
## 版本历史
| 版本 | 日期 | 作者 | 变更说明 |
|------|------|------|----------|
| v1.0 | 2024-12-20 | 运维团队 | 初版部署运维指南 |
## 1. 环境要求
### 1.1 硬件要求
#### 生产环境最低配置
| 组件 | CPU | 内存 | 存储 | 网络 |
|------|-----|------|------|------|
| Web服务器 | 4核 | 8GB | 100GB SSD | 1Gbps |
| 应用服务器 | 8核 | 16GB | 200GB SSD | 1Gbps |
| 数据库服务器 | 8核 | 32GB | 500GB SSD | 1Gbps |
| Redis缓存 | 4核 | 8GB | 50GB SSD | 1Gbps |
| 文件存储 | 4核 | 8GB | 2TB HDD | 1Gbps |
#### 推荐配置
| 组件 | CPU | 内存 | 存储 | 网络 |
|------|-----|------|------|------|
| Web服务器 | 8核 | 16GB | 200GB SSD | 10Gbps |
| 应用服务器 | 16核 | 32GB | 500GB SSD | 10Gbps |
| 数据库服务器 | 16核 | 64GB | 1TB SSD | 10Gbps |
| Redis缓存 | 8核 | 16GB | 100GB SSD | 10Gbps |
| 文件存储 | 8核 | 16GB | 5TB SSD | 10Gbps |
### 1.2 软件要求
#### 操作系统
- **推荐**: Ubuntu 20.04 LTS / CentOS 8 / RHEL 8
- **最低**: Ubuntu 18.04 LTS / CentOS 7
#### 基础软件
```bash
# 必需软件版本
Node.js >= 18.0.0
npm >= 8.0.0
MySQL >= 8.0
Redis >= 6.0
Nginx >= 1.18
Docker >= 20.10
Docker Compose >= 2.0
```
## 2. 快速部署
### 2.1 一键部署脚本
```bash
#!/bin/bash
# quick_deploy.sh - 活牛采购系统一键部署脚本
set -e
echo "开始部署活牛采购智能数字化系统..."
# 检查系统
if [[ "$OSTYPE" != "linux-gnu"* ]]; then
echo "错误: 仅支持Linux系统"
exit 1
fi
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装基础依赖
sudo apt install -y curl wget git vim htop tree unzip
# 安装Node.js 18
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
# 安装Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 创建应用目录
sudo mkdir -p /opt/niumall
sudo chown -R $USER:$USER /opt/niumall
# 克隆代码
cd /opt/niumall
git clone https://github.com/your-org/niumall.git .
# 启动服务
docker-compose up -d
echo "部署完成!"
echo "API服务: http://localhost:3000"
echo "管理后台: http://localhost"
```
### 2.2 Docker Compose配置
```yaml
# docker-compose.yml
version: '3.8'
services:
# MySQL数据库
mysql:
image: mysql:8.0
container_name: niumall-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: niumall
MYSQL_USER: niumall_user
MYSQL_PASSWORD: user_password
volumes:
- mysql_data:/var/lib/mysql
ports:
- "3306:3306"
networks:
- niumall-network
# Redis缓存
redis:
image: redis:7-alpine
container_name: niumall-redis
restart: unless-stopped
command: redis-server --requirepass redis_password
volumes:
- redis_data:/data
ports:
- "6379:6379"
networks:
- niumall-network
# 后端API服务
api:
build:
context: ./backend
dockerfile: Dockerfile
container_name: niumall-api
restart: unless-stopped
environment:
NODE_ENV: production
DB_HOST: mysql
REDIS_HOST: redis
ports:
- "3000:3000"
networks:
- niumall-network
depends_on:
- mysql
- redis
# 管理后台
admin:
build:
context: ./admin-system
dockerfile: Dockerfile
container_name: niumall-admin
restart: unless-stopped
ports:
- "80:80"
networks:
- niumall-network
depends_on:
- api
volumes:
mysql_data:
redis_data:
networks:
niumall-network:
driver: bridge
```
## 3. 监控与维护
### 3.1 健康检查脚本
```bash
#!/bin/bash
# health_check.sh
echo "=== 系统健康检查 $(date) ==="
# 检查服务状态
services=("mysql" "redis" "api" "admin")
for service in "${services[@]}"; do
if docker ps | grep -q "niumall-$service"; then
echo "$service: ✓ 运行中"
else
echo "$service: ✗ 已停止"
fi
done
# 检查API健康状态
if curl -f -s http://localhost:3000/health > /dev/null; then
echo "API服务: ✓ 健康"
else
echo "API服务: ✗ 异常"
fi
# 检查系统资源
echo "CPU使用率: $(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)"
echo "内存使用率: $(free -m | awk 'NR==2{printf "%.2f%%\n", $3*100/$2}')"
echo "磁盘使用率: $(df -h | awk '$NF=="/"{printf "%s\n", $5}')"
echo "=== 检查完成 ==="
```
### 3.2 备份脚本
```bash
#!/bin/bash
# backup.sh
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup"
mkdir -p $BACKUP_DIR
# 数据库备份
echo "开始数据库备份..."
docker exec niumall-mysql mysqldump -u root -proot_password niumall > $BACKUP_DIR/niumall_$DATE.sql
gzip $BACKUP_DIR/niumall_$DATE.sql
# 删除7天前的备份
find $BACKUP_DIR -name "niumall_*.sql.gz" -mtime +7 -delete
echo "备份完成: niumall_$DATE.sql.gz"
```
### 3.3 日志查看
```bash
# 查看所有服务日志
docker-compose logs
# 查看特定服务日志
docker-compose logs api
docker-compose logs mysql
# 实时查看日志
docker-compose logs -f api
```
## 4. 故障排除
### 4.1 常见问题
#### 服务无法启动
```bash
# 检查容器状态
docker-compose ps
# 查看错误日志
docker-compose logs [service_name]
# 重启服务
docker-compose restart [service_name]
```
#### 数据库连接失败
```bash
# 检查MySQL容器
docker exec -it niumall-mysql mysql -u root -p
# 检查网络连接
docker network ls
docker network inspect niumall_niumall-network
```
#### 端口冲突
```bash
# 检查端口占用
sudo netstat -tulpn | grep :3000
sudo netstat -tulpn | grep :3306
# 修改docker-compose.yml中的端口映射
```
### 4.2 紧急恢复
```bash
#!/bin/bash
# emergency_recovery.sh
echo "开始紧急恢复..."
# 停止所有服务
docker-compose down
# 清理容器和网络
docker system prune -f
# 重新启动服务
docker-compose up -d
# 等待服务启动
sleep 30
# 健康检查
./health_check.sh
echo "紧急恢复完成"
```
## 5. 性能优化
### 5.1 数据库优化
```sql
-- 查看慢查询
SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'long_query_time';
-- 分析表
ANALYZE TABLE orders, users, transport_tasks;
-- 优化表
OPTIMIZE TABLE orders, users, transport_tasks;
```
### 5.2 缓存优化
```bash
# Redis内存使用情况
docker exec niumall-redis redis-cli info memory
# 清理过期键
docker exec niumall-redis redis-cli --scan --pattern "*" | xargs docker exec niumall-redis redis-cli del
```
## 6. 安全配置
### 6.1 防火墙设置
```bash
# 安装ufw
sudo apt install ufw
# 基本规则
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 允许必要端口
sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
# 启用防火墙
sudo ufw enable
```
### 6.2 SSL证书
```bash
# 安装Certbot
sudo apt install certbot
# 获取证书
sudo certbot certonly --standalone -d api.niumall.com -d admin.niumall.com
# 自动续期
echo "0 12 * * * /usr/bin/certbot renew --quiet" | sudo crontab -
```
## 7. 维护计划
### 7.1 定时任务
```bash
# 编辑crontab
crontab -e
# 添加定时任务
# 每天凌晨2点备份数据库
0 2 * * * /opt/niumall/scripts/backup.sh
# 每小时检查系统健康状态
0 * * * * /opt/niumall/scripts/health_check.sh >> /var/log/niumall/health.log
# 每周日凌晨清理日志
0 0 * * 0 docker system prune -f
```
### 7.2 更新流程
```bash
#!/bin/bash
# update.sh
echo "开始更新系统..."
# 拉取最新代码
git pull origin main
# 重新构建镜像
docker-compose build
# 滚动更新
docker-compose up -d --no-deps api
docker-compose up -d --no-deps admin
# 健康检查
sleep 30
./health_check.sh
echo "更新完成"
```
## 8. 联系信息
### 8.1 技术支持
- **运维团队**: ops@niumall.com
- **开发团队**: dev@niumall.com
- **紧急联系**: +86-138-0000-0000
### 8.2 相关文档
- [项目总览](./项目总览.md)
- [产品需求文档](./产品需求文档.md)
- [系统架构设计](./系统架构设计.md)
- [数据库设计](./数据库设计.md)
- [API接口文档](./API接口文档.md)
---
**注意**: 请根据实际环境调整配置参数,确保系统安全稳定运行。