9.3 KiB
9.3 KiB
活牛采购智能数字化系统 - 部署运维指南
版本历史
| 版本 | 日期 | 作者 | 变更说明 |
|---|---|---|---|
| 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
基础软件
# 必需软件版本
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 一键部署脚本
#!/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配置
# 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
const domainConfig = {
backend: 'wapi.nanniwan.com',
admin: 'ad.nanniwan.com',
website: 'www.nanniwan.com'
};
CORS配置更新
文件: backend/src/main.js
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 健康检查脚本
#!/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 备份脚本
#!/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 日志查看
# 查看所有服务日志
docker-compose logs
# 查看特定服务日志
docker-compose logs api
docker-compose logs mysql
# 实时查看日志
docker-compose logs -f api
4. 故障排除
4.1 常见问题
服务无法启动
# 检查容器状态
docker-compose ps
# 查看错误日志
docker-compose logs [service_name]
# 重启服务
docker-compose restart [service_name]
数据库连接失败
# 检查MySQL容器
docker exec -it niumall-mysql mysql -u root -p
# 检查网络连接
docker network ls
docker network inspect niumall_niumall-network
端口冲突
# 检查端口占用
sudo netstat -tulpn | grep :3000
sudo netstat -tulpn | grep :3306
# 修改docker-compose.yml中的端口映射
4.2 紧急恢复
#!/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 数据库优化
-- 查看慢查询
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 缓存优化
# 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 防火墙设置
# 安装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证书
# 安装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 定时任务
# 编辑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 更新流程
#!/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 相关文档
注意: 请根据实际环境调整配置参数,确保系统安全稳定运行。