更新数据库配置为niumall,添加用户登出功能并集成axios
This commit is contained in:
434
docs/部署运维指南.md
Normal file
434
docs/部署运维指南.md
Normal file
@@ -0,0 +1,434 @@
|
||||
# 活牛采购智能数字化系统 - 部署运维指南
|
||||
|
||||
## 版本历史
|
||||
| 版本 | 日期 | 作者 | 变更说明 |
|
||||
|------|------|------|----------|
|
||||
| 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)
|
||||
|
||||
---
|
||||
|
||||
**注意**: 请根据实际环境调整配置参数,确保系统安全稳定运行。
|
||||
Reference in New Issue
Block a user