# 活牛采购智能数字化系统 - 部署运维指南 ## 版本历史 | 版本 | 日期 | 作者 | 变更说明 | |------|------|------|----------| | 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 域名配置总览 | 域名类型 | 域名地址 | 用途 | 环境 | |---------|---------|------|------| | 后端API | `wapi.nanniwan.com` | 提供RESTful API服务 | 生产环境 | | 管理后台 | `ad.nanniwan.com` | 管理员后台管理系统 | 生产环境 | | 官方网站 | `www.nanniwan.com` | 产品官网和文档 | 生产环境 | | 开发环境 | `localhost:3000` | 本地开发测试 | 开发环境 | | 开发环境 | `localhost:5173` | Vite开发服务器 | 开发环境 | ### 3.2 配置文件更新 #### 后端配置更新 **文件:** `backend/src/config/config.js` ```javascript const domainConfig = { backend: 'wapi.nanniwan.com', admin: 'ad.nanniwan.com', website: 'www.nanniwan.com' }; ``` #### CORS配置更新 **文件:** `backend/src/main.js` ```javascript app.use(cors({ origin: [ 'http://localhost:3000', 'http://localhost:5173', 'https://wapi.nanniwan.com', 'https://ad.nanniwan.com', 'https://www.nanniwan.com' ], credentials: true })); ``` ## 4. 监控与维护 ### 4.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) --- **注意**: 请根据实际环境调整配置参数,确保系统安全稳定运行。