855 lines
18 KiB
Markdown
855 lines
18 KiB
Markdown
# 神东煤炭综采工作面数据管理与AI分析系统 - 部署与升级指南
|
||
|
||
## 目录
|
||
|
||
1. [系统简介](#系统简介)
|
||
2. [系统要求](#系统要求)
|
||
3. [新版本功能说明](#新版本功能说明)
|
||
4. [服务器升级指南(重要)](#服务器升级指南重要)
|
||
5. [Ubuntu直接部署](#ubuntu直接部署)
|
||
6. [Docker部署(推荐)](#docker部署推荐)
|
||
7. [Docker Compose部署(推荐)](#docker-compose部署推荐)
|
||
8. [配置说明](#配置说明)
|
||
9. [Nginx反向代理](#nginx反向代理)
|
||
10. [SSL HTTPS配置](#ssl-https配置)
|
||
11. [常见问题](#常见问题)
|
||
12. [备份与恢复](#备份与恢复)
|
||
|
||
---
|
||
|
||
## 系统简介
|
||
|
||
本系统是神东煤炭集团开发的综采工作面数据管理与AI分析系统,支持:
|
||
- 实时数据采集与监测
|
||
- 多工作面数据管理
|
||
- 智能故障诊断(AI驱动)
|
||
- 数据趋势分析
|
||
- 可视化报表展示
|
||
|
||
---
|
||
|
||
## 系统要求
|
||
|
||
| 项目 | 要求 |
|
||
|------|------|
|
||
| 操作系统 | Ubuntu 20.04 LTS / 22.04 LTS / CentOS 7+ |
|
||
| Python | 3.8 - 3.11 |
|
||
| 数据库 | MySQL 5.7+ / 神通数据库(兼容MySQL协议) |
|
||
| 内存 | 最低 2GB,推荐 4GB+ |
|
||
| 磁盘 | 最低 10GB可用空间 |
|
||
| 网络 | 需要访问数据库服务器和AI API服务 |
|
||
|
||
---
|
||
|
||
## 新版本功能说明
|
||
|
||
### 本次更新内容
|
||
|
||
1. **首页概览优化**
|
||
- 新增顶部统计卡片(工作面数量、监测点总数、总采集次数、今日采集、总数据量)
|
||
- 新增工作面统计表格,支持点击跳转到实时监测页面
|
||
|
||
2. **AI分析数据量优化**
|
||
- 故障诊断:限制最多200个监测点,按设备类型分组采样
|
||
- 趋势分析:限制最多200个监测点,历史数据限制2000条
|
||
- 防止AI API上下文超限,提升分析成功率
|
||
|
||
3. **AI分析数据摘要**
|
||
- 在分析结果上方显示数据摘要卡片
|
||
- 以表格形式展示使用的监测点中文名称
|
||
- 方便用户了解AI分析的数据基础
|
||
|
||
4. **数据统计API增强**
|
||
- `/api/stats/all` 返回总体统计数据
|
||
- 包含各工作面详细统计信息
|
||
|
||
---
|
||
|
||
## 服务器升级指南(重要)
|
||
|
||
> **适用场景**: 你已经在服务器上部署了旧版本,需要升级到新版本
|
||
|
||
### 升级前准备
|
||
|
||
#### 1. 备份现有系统
|
||
|
||
```bash
|
||
# 假设原项目路径为 /path/to/websitedata/mining-system
|
||
# 请根据实际情况修改路径
|
||
|
||
PROJECT_DIR="/path/to/websitedata/mining-system"
|
||
BACKUP_DIR="/path/to/backups"
|
||
DATE=$(date +%Y%m%d_%H%M%S)
|
||
|
||
# 创建备份目录
|
||
sudo mkdir -p $BACKUP_DIR
|
||
|
||
# 备份整个项目目录
|
||
sudo tar -czf $BACKUP_DIR/mining-system-backup-$DATE.tar.gz \
|
||
-C /path/to/websitedata \
|
||
mining-system
|
||
|
||
# 备份数据库(如使用本地SQLite)
|
||
sudo cp $PROJECT_DIR/mining_data.db $BACKUP_DIR/mining_data.db-$DATE.backup
|
||
|
||
# 备份配置文件
|
||
sudo cp $PROJECT_DIR/config.py $BACKUP_DIR/config.py-$DATE.backup
|
||
|
||
# 备份systemd服务文件(如已配置)
|
||
sudo cp /etc/systemd/system/mining-system.service $BACKUP_DIR/ 2>/dev/null || true
|
||
|
||
# 备份Nginx配置(如已配置)
|
||
sudo cp /etc/nginx/sites-available/mining-system $BACKUP_DIR/ 2>/dev/null || true
|
||
|
||
echo "备份完成: $BACKUP_DIR/mining-system-backup-$DATE.tar.gz"
|
||
```
|
||
|
||
#### 2. 停止当前服务
|
||
|
||
```bash
|
||
# 如果使用systemd服务
|
||
sudo systemctl stop mining-system
|
||
|
||
# 如果使用手动启动,找到并停止进程
|
||
sudo lsof -ti:5000 | xargs sudo kill -9 2>/dev/null || true
|
||
|
||
# 确认服务已停止
|
||
sudo systemctl status mining-system
|
||
# 或
|
||
sudo lsof -i :5000
|
||
```
|
||
|
||
### 执行升级
|
||
|
||
#### 方式一:覆盖文件升级(推荐)
|
||
|
||
```bash
|
||
# 1. 上传新版本的整个 mining-system 目录到服务器
|
||
# 使用 scp 命令从本地上传:
|
||
# scp -r ./mining-system user@server:/path/to/websitedata/
|
||
|
||
# 2. 保留原有配置文件和数据库
|
||
cd /path/to/websitedata/mining-system
|
||
|
||
# 备份新版配置文件(用旧版覆盖)
|
||
cp config.py config.py.new
|
||
cp /path/to/backups/config.py.$(ls -t /path/to/backups/ | grep config.py | head -1) config.py
|
||
|
||
# 保留数据库文件(如果已有数据采集)
|
||
# mining_data.db 应该在升级时自动保留
|
||
|
||
# 3. 进入项目目录
|
||
cd /path/to/websitedata/mining-system
|
||
|
||
# 4. 激活虚拟环境并更新依赖
|
||
source venv/bin/activate
|
||
|
||
# 如虚拟环境不存在,重新创建
|
||
if [ ! -d "venv" ]; then
|
||
python3 -m venv venv
|
||
source venv/bin/activate
|
||
fi
|
||
|
||
# 升级pip
|
||
pip install --upgrade pip
|
||
|
||
# 安装/更新依赖(如有新增依赖)
|
||
pip install -r requirements.txt
|
||
|
||
# 5. 验证文件完整性
|
||
ls -la *.py
|
||
echo "---"
|
||
cat requirements.txt
|
||
|
||
# 6. 测试启动
|
||
python3 app.py &
|
||
sleep 3
|
||
curl -s http://localhost:5000/api/stats/all
|
||
echo ""
|
||
|
||
# 如果返回正常JSON数据,说明升级成功
|
||
# 按 Ctrl+C 停止测试进程
|
||
```
|
||
|
||
#### 方式二:全新部署然后迁移配置
|
||
|
||
```bash
|
||
# 1. 上传新版本到新的目录
|
||
scp -r ./mining-system user@server:/path/to/websitedata/mining-system-new
|
||
|
||
# 2. 在服务器上配置
|
||
cd /path/to/websitedata/mining-system-new
|
||
|
||
# 3. 复制旧版配置文件
|
||
cp /path/to/websitedata/mining-system/config.py ./config.py
|
||
|
||
# 4. 复制数据库文件(如使用SQLite)
|
||
cp /path/to/websitedata/mining-system/mining_data.db ./mining_data.db
|
||
|
||
# 5. 创建虚拟环境并安装依赖
|
||
python3 -m venv venv
|
||
source venv/bin/activate
|
||
pip install --upgrade pip
|
||
pip install -r requirements.txt
|
||
|
||
# 6. 测试启动
|
||
python3 app.py
|
||
|
||
# 7. 确认运行正常后,替换旧目录
|
||
# 停止服务
|
||
sudo systemctl stop mining-system
|
||
|
||
# 备份旧目录
|
||
sudo mv /path/to/websitedata/mining-system /path/to/websitedata/mining-system-old
|
||
|
||
# 移动新目录
|
||
sudo mv /path/to/websitedata/mining-system-new /path/to/websitedata/mining-system
|
||
|
||
# 更新systemd服务路径(如路径有变化)
|
||
sudo nano /etc/systemd/system/mining-system.service
|
||
# 确保 WorkingDirectory 和 ExecStart 路径正确
|
||
|
||
# 重启服务
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl start mining-system
|
||
sudo systemctl status mining-system
|
||
```
|
||
|
||
### 升级后验证
|
||
|
||
```bash
|
||
# 1. 检查服务状态
|
||
sudo systemctl status mining-system
|
||
|
||
# 2. 检查API是否正常
|
||
curl -s http://localhost:5000/api/stats/all | python3 -m json.tool
|
||
|
||
# 3. 检查网页是否正常访问
|
||
# 浏览器访问 http://服务器IP:5000
|
||
|
||
# 4. 验证新功能
|
||
# - 首页应显示统计卡片
|
||
# - 首页应显示工作面统计表格
|
||
# - AI分析结果上方应显示数据摘要
|
||
|
||
# 5. 查看日志
|
||
sudo journalctl -u mining-system -f --since "5 minutes ago"
|
||
```
|
||
|
||
### 回滚方案
|
||
|
||
如果升级后出现问题,可以快速回滚:
|
||
|
||
```bash
|
||
# 1. 停止服务
|
||
sudo systemctl stop mining-system
|
||
|
||
# 2. 使用备份恢复
|
||
BACKUP_FILE=$(ls -t /path/to/backups/mining-system-backup-* | head -1)
|
||
sudo tar -xzf $BACKUP_FILE -C /path/to/websitedata/
|
||
|
||
# 3. 恢复服务文件(如需要)
|
||
sudo cp /path/to/backups/mining-system.service /etc/systemd/system/ 2>/dev/null || true
|
||
|
||
# 4. 重载并启动
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl start mining-system
|
||
|
||
echo "已回滚到: $BACKUP_FILE"
|
||
```
|
||
|
||
---
|
||
|
||
## Ubuntu直接部署
|
||
|
||
### 1. 更新系统
|
||
|
||
```bash
|
||
sudo apt-get update && sudo apt-get upgrade -y
|
||
```
|
||
|
||
### 2. 安装Python及依赖
|
||
|
||
```bash
|
||
sudo apt-get install -y \
|
||
python3 \
|
||
python3-pip \
|
||
python3-venv \
|
||
python3-dev \
|
||
build-essential \
|
||
git \
|
||
curl \
|
||
wget
|
||
```
|
||
|
||
### 3. 上传项目并安装
|
||
|
||
```bash
|
||
# 上传项目文件到服务器
|
||
# scp -r ./mining-system user@server:/path/to/websitedata/
|
||
|
||
cd /path/to/websitedata/mining-system
|
||
|
||
# 执行一键安装
|
||
sudo bash install.sh
|
||
```
|
||
|
||
### 4. 手动安装(如不使用脚本)
|
||
|
||
```bash
|
||
cd /path/to/websitedata/mining-system
|
||
|
||
# 创建虚拟环境
|
||
python3 -m venv venv
|
||
source venv/bin/activate
|
||
|
||
# 安装依赖
|
||
pip install --upgrade pip
|
||
pip install -r requirements.txt
|
||
|
||
# 创建标签名称目录
|
||
mkdir -p ../name
|
||
```
|
||
|
||
### 5. 配置数据库连接
|
||
|
||
编辑 `config.py`,修改数据库配置:
|
||
|
||
```python
|
||
DB_HOST = os.getenv('DB_HOST', '你的数据库IP')
|
||
DB_PORT = int(os.getenv('DB_PORT', 3306))
|
||
DB_USER = os.getenv('DB_USER', '你的用户名')
|
||
DB_PASSWORD = os.getenv('DB_PASSWORD', '你的密码')
|
||
DB_NAME = os.getenv('DB_NAME', '你的数据库名')
|
||
```
|
||
|
||
### 6. 启动服务
|
||
|
||
```bash
|
||
# 前台启动(测试用)
|
||
bash start.sh
|
||
|
||
# 或使用systemd服务(生产环境)
|
||
sudo bash install.sh # 选择配置系统服务
|
||
sudo systemctl start mining-system
|
||
sudo systemctl enable mining-system
|
||
```
|
||
|
||
---
|
||
|
||
## Docker部署(推荐)
|
||
|
||
### 环境准备
|
||
|
||
确保服务器已安装 Docker 和 Docker Compose:
|
||
|
||
```bash
|
||
# 安装Docker
|
||
curl -fsSL https://get.docker.com | sudo bash
|
||
|
||
# 安装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
|
||
|
||
# 验证安装
|
||
docker --version
|
||
docker-compose --version
|
||
```
|
||
|
||
### 创建Dockerfile
|
||
|
||
在项目根目录创建 `Dockerfile`:
|
||
|
||
```dockerfile
|
||
FROM python:3.10-slim
|
||
|
||
WORKDIR /app
|
||
|
||
# 安装系统依赖
|
||
RUN apt-get update && apt-get install -y \
|
||
gcc \
|
||
default-libmysqlclient-dev \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# 复制依赖文件并安装
|
||
COPY requirements.txt .
|
||
RUN pip install --no-cache-dir -r requirements.txt
|
||
|
||
# 复制项目文件
|
||
COPY . .
|
||
|
||
# 创建必要目录
|
||
RUN mkdir -p /app/../name
|
||
|
||
# 暴露端口
|
||
EXPOSE 5000
|
||
|
||
# 健康检查
|
||
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||
CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:5000/')" || exit 1
|
||
|
||
# 启动命令
|
||
CMD ["python", "app.py"]
|
||
```
|
||
|
||
### 创建.dockerignore
|
||
|
||
在项目根目录创建 `.dockerignore`:
|
||
|
||
```
|
||
venv/
|
||
__pycache__/
|
||
*.pyc
|
||
*.pyo
|
||
*.db-journal
|
||
.env
|
||
.DS_Store
|
||
*.log
|
||
.git/
|
||
```
|
||
|
||
### 构建并运行
|
||
|
||
```bash
|
||
# 构建镜像
|
||
docker build -t mining-system:latest .
|
||
|
||
# 运行容器(使用环境变量配置)
|
||
docker run -d \
|
||
--name mining-system \
|
||
--restart unless-stopped \
|
||
-p 5000:5000 \
|
||
-e DB_HOST=你的数据库IP \
|
||
-e DB_PORT=3306 \
|
||
-e DB_USER=你的用户名 \
|
||
-e DB_PASSWORD=你的密码 \
|
||
-e DB_NAME=你的数据库名 \
|
||
-e DEFAULT_AI_MODEL=qwen \
|
||
-v /path/to/name:/app/../name \
|
||
mining-system:latest
|
||
|
||
# 查看日志
|
||
docker logs -f mining-system
|
||
|
||
# 停止容器
|
||
docker stop mining-system
|
||
|
||
# 启动容器
|
||
docker start mining-system
|
||
```
|
||
|
||
### 使用配置文件
|
||
|
||
如果需要使用 `config.py` 而不是环境变量:
|
||
|
||
```bash
|
||
# 将config.py复制到项目目录,然后
|
||
docker run -d \
|
||
--name mining-system \
|
||
--restart unless-stopped \
|
||
-p 5000:5000 \
|
||
-v /path/to/mining-system:/app \
|
||
-v /path/to/name:/app/../name \
|
||
mining-system:latest
|
||
```
|
||
|
||
---
|
||
|
||
## Docker Compose部署(推荐)
|
||
|
||
### 创建 docker-compose.yml
|
||
|
||
在项目根目录创建 `docker-compose.yml`:
|
||
|
||
```yaml
|
||
version: '3.8'
|
||
|
||
services:
|
||
mining-system:
|
||
build:
|
||
context: .
|
||
dockerfile: Dockerfile
|
||
container_name: mining-system
|
||
restart: unless-stopped
|
||
ports:
|
||
- "5000:5000"
|
||
environment:
|
||
- DB_HOST=你的数据库IP
|
||
- DB_PORT=3306
|
||
- DB_USER=你的用户名
|
||
- DB_PASSWORD=你的密码
|
||
- DB_NAME=你的数据库名
|
||
- DEFAULT_AI_MODEL=qwen
|
||
volumes:
|
||
# 标签名称目录映射
|
||
- ./name:/app/../name
|
||
# 日志目录(可选)
|
||
- ./logs:/app/logs
|
||
healthcheck:
|
||
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:5000/')"]
|
||
interval: 30s
|
||
timeout: 3s
|
||
retries: 3
|
||
start_period: 10s
|
||
networks:
|
||
- mining-network
|
||
|
||
# 可选:Nginx反向代理
|
||
nginx:
|
||
image: nginx:alpine
|
||
container_name: mining-nginx
|
||
restart: unless-stopped
|
||
ports:
|
||
- "80:80"
|
||
- "443:443"
|
||
volumes:
|
||
- ./nginx.conf:/etc/nginx/conf.d/default.conf
|
||
# SSL证书(如使用HTTPS)
|
||
# - ./ssl:/etc/nginx/ssl
|
||
depends_on:
|
||
- mining-system
|
||
networks:
|
||
- mining-network
|
||
|
||
networks:
|
||
mining-network:
|
||
driver: bridge
|
||
```
|
||
|
||
### 使用Docker Compose启动
|
||
|
||
```bash
|
||
# 启动所有服务
|
||
docker-compose up -d
|
||
|
||
# 查看服务状态
|
||
docker-compose ps
|
||
|
||
# 查看日志
|
||
docker-compose logs -f
|
||
|
||
# 查看mining-system日志
|
||
docker-compose logs -f mining-system
|
||
|
||
# 停止所有服务
|
||
docker-compose down
|
||
|
||
# 重启服务
|
||
docker-compose restart
|
||
|
||
# 更新并重启(修改代码后)
|
||
docker-compose up -d --build
|
||
|
||
# 进入容器内部
|
||
docker-compose exec mining-system bash
|
||
```
|
||
|
||
### Docker Compose 环境变量文件
|
||
|
||
创建 `.env` 文件管理敏感信息:
|
||
|
||
```env
|
||
# .env 文件(不要提交到git)
|
||
DB_HOST=192.168.x.x
|
||
DB_PORT=3306
|
||
DB_USER=your_username
|
||
DB_PASSWORD=your_password
|
||
DB_NAME=your_database
|
||
DEFAULT_AI_MODEL=qwen
|
||
|
||
# AI模型配置
|
||
AI_API_URL=http://your-ai-api:port/path
|
||
AI_API_KEY=your-api-key
|
||
```
|
||
|
||
修改 `docker-compose.yml` 使用环境变量文件:
|
||
|
||
```yaml
|
||
services:
|
||
mining-system:
|
||
# ... 其他配置
|
||
env_file:
|
||
- .env
|
||
# 移除 environment 部分,改用 env_file
|
||
```
|
||
|
||
---
|
||
|
||
## 配置说明
|
||
|
||
### 环境变量配置
|
||
|
||
| 变量名 | 说明 | 默认值 |
|
||
|--------|------|--------|
|
||
| `DB_HOST` | 数据库主机地址 | 192.168.75.129 |
|
||
| `DB_PORT` | 数据库端口 | 3306 |
|
||
| `DB_USER` | 数据库用户名 | - |
|
||
| `DB_PASSWORD` | 数据库密码 | - |
|
||
| `DB_NAME` | 数据库名称 | - |
|
||
| `DEFAULT_AI_MODEL` | 默认AI模型 (kimi/deepseek/qwen/zhipu) | qwen |
|
||
| `SECRET_KEY` | Flask密钥 | - |
|
||
| `API_URL` | 组态王API地址 | - |
|
||
| `USER_HANDLE` | 组态王用户句柄 | - |
|
||
|
||
### 标签中文名称配置
|
||
|
||
标签的中文名称从CSV文件加载:
|
||
|
||
```
|
||
websitedata/
|
||
├── mining-system/ # 本应用
|
||
│ ├── app.py
|
||
│ ├── config.py
|
||
│ └── ...
|
||
└── name/ # 标签名称CSV文件目录
|
||
├── 52300工作面采煤机.csv
|
||
├── 52300工作面泵站主站.csv
|
||
└── ...
|
||
```
|
||
|
||
CSV文件格式要求:
|
||
- 包含 `TagName` 列(标签英文名)
|
||
- 包含 `Description` 列(中文描述/名称)
|
||
|
||
### AI模型配置
|
||
|
||
系统支持多个AI模型,在 `config.py` 中配置:
|
||
|
||
```python
|
||
AI_MODELS = {
|
||
'kimi': {
|
||
'name': 'Kimi (Qwen3.5-122B-A10B)',
|
||
'api_url': 'http://your-ai-api/chat/completions',
|
||
'api_key': 'your-api-key',
|
||
'model': 'Qwen3.5-122B-A10B'
|
||
},
|
||
'deepseek': {
|
||
'name': 'DeepSeek-V3.2-671B',
|
||
# ...
|
||
},
|
||
# 更多模型...
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Nginx反向代理
|
||
|
||
### 安装Nginx
|
||
|
||
```bash
|
||
sudo apt-get install -y nginx
|
||
```
|
||
|
||
### 配置反向代理
|
||
|
||
```bash
|
||
sudo nano /etc/nginx/sites-available/mining-system
|
||
```
|
||
|
||
```nginx
|
||
server {
|
||
listen 80;
|
||
server_name your-server-ip; # 修改为服务器IP或域名
|
||
|
||
access_log /var/log/nginx/mining-access.log;
|
||
error_log /var/log/nginx/mining-error.log;
|
||
|
||
client_max_body_size 50M;
|
||
|
||
location / {
|
||
proxy_pass http://127.0.0.1:5000;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection 'upgrade';
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
proxy_cache_bypass $http_upgrade;
|
||
|
||
# AI分析可能需要较长时间
|
||
proxy_connect_timeout 600;
|
||
proxy_send_timeout 600;
|
||
proxy_read_timeout 600;
|
||
}
|
||
|
||
# 静态文件缓存(可选,如Nginx直接服务静态文件)
|
||
location /static/ {
|
||
alias /path/to/mining-system/static/;
|
||
expires 30d;
|
||
add_header Cache-Control "public, immutable";
|
||
}
|
||
}
|
||
```
|
||
|
||
```bash
|
||
# 启用配置
|
||
sudo ln -s /etc/nginx/sites-available/mining-system /etc/nginx/sites-enabled/
|
||
sudo rm /etc/nginx/sites-enabled/default # 可选
|
||
sudo nginx -t
|
||
sudo systemctl reload nginx
|
||
```
|
||
|
||
---
|
||
|
||
## SSL HTTPS配置
|
||
|
||
### 使用Let's Encrypt
|
||
|
||
```bash
|
||
# 安装certbot
|
||
sudo apt-get install -y certbot python3-certbot-nginx
|
||
|
||
# 获取并配置证书
|
||
sudo certbot --nginx -d your-domain.com
|
||
|
||
# 验证自动续期
|
||
sudo certbot renew --dry-run
|
||
```
|
||
|
||
### 使用自有证书
|
||
|
||
```nginx
|
||
server {
|
||
listen 443 ssl http2;
|
||
server_name your-domain.com;
|
||
|
||
ssl_certificate /etc/nginx/ssl/cert.pem;
|
||
ssl_certificate_key /etc/nginx/ssl/key.pem;
|
||
ssl_protocols TLSv1.2 TLSv1.3;
|
||
ssl_ciphers HIGH:!aNULL:!MD5;
|
||
|
||
location / {
|
||
proxy_pass http://127.0.0.1:5000;
|
||
# ... 其他代理配置
|
||
}
|
||
}
|
||
|
||
# HTTP重定向到HTTPS
|
||
server {
|
||
listen 80;
|
||
server_name your-domain.com;
|
||
return 301 https://$host$request_uri;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 常见问题
|
||
|
||
### 1. 数据库连接失败
|
||
|
||
```
|
||
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server")
|
||
```
|
||
|
||
**解决方案**:
|
||
- 检查网络连通性: `ping 数据库IP`
|
||
- 检查端口: `telnet 数据库IP 端口`
|
||
- 检查防火墙规则
|
||
- 确认数据库MySQL兼容模式已启用
|
||
|
||
### 2. Docker容器启动失败
|
||
|
||
```bash
|
||
# 查看容器日志
|
||
docker logs mining-system
|
||
|
||
# 常见问题:
|
||
# 1. 数据库连接超时 - 检查数据库IP是否在Docker网络中可达
|
||
# 2. 权限问题 - 检查卷挂载目录权限
|
||
# 3. 端口冲突 - 检查5000端口是否被占用
|
||
```
|
||
|
||
### 3. 升级后页面异常
|
||
|
||
```bash
|
||
# 清理浏览器缓存
|
||
# 或强制刷新 Ctrl+F5
|
||
|
||
# 检查JavaScript错误
|
||
# 浏览器F12 -> Console
|
||
|
||
# 重启服务
|
||
sudo systemctl restart mining-system
|
||
# 或
|
||
docker-compose restart
|
||
```
|
||
|
||
### 4. AI分析无响应
|
||
|
||
- 检查AI API服务是否可用
|
||
- 检查网络是否可达AI服务地址
|
||
- 查看日志: `sudo journalctl -u mining-system -f` 或 `docker-compose logs -f`
|
||
|
||
### 5. 内存不足
|
||
|
||
```bash
|
||
# 增加swap
|
||
sudo fallocate -l 2G /swapfile
|
||
sudo chmod 600 /swapfile
|
||
sudo mkswap /swapfile
|
||
sudo swapon /swapfile
|
||
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
|
||
```
|
||
|
||
---
|
||
|
||
## 备份与恢复
|
||
|
||
### 完整备份
|
||
|
||
```bash
|
||
PROJECT_DIR="/path/to/websitedata/mining-system"
|
||
BACKUP_DIR="/path/to/backups"
|
||
DATE=$(date +%Y%m%d)
|
||
|
||
sudo mkdir -p $BACKUP_DIR
|
||
|
||
# 备份项目
|
||
sudo tar -czf $BACKUP_DIR/mining-system-$DATE.tar.gz \
|
||
-C /path/to/websitedata \
|
||
mining-system
|
||
|
||
# 备份数据库
|
||
sudo cp $PROJECT_DIR/mining_data.db $BACKUP_DIR/mining_data.db-$DATE
|
||
|
||
# 备份配置文件
|
||
sudo cp /etc/systemd/system/mining-system.service $BACKUP_DIR/ 2>/dev/null || true
|
||
sudo cp /etc/nginx/sites-available/mining-system $BACKUP_DIR/ 2>/dev/null || true
|
||
```
|
||
|
||
### 恢复
|
||
|
||
```bash
|
||
# 恢复项目
|
||
sudo tar -xzf mining-system-20260625.tar.gz -C /path/to/websitedata/
|
||
|
||
# 恢复数据库
|
||
sudo cp mining_data.db.20260625 /path/to/websitedata/mining-system/
|
||
|
||
# 恢复服务
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl restart mining-system
|
||
sudo systemctl reload nginx # 如配置了Nginx
|
||
```
|
||
|
||
### Docker环境备份
|
||
|
||
```bash
|
||
# 导出容器数据
|
||
docker commit mining-system mining-system-backup:$(date +%Y%m%d)
|
||
|
||
# 备份卷数据
|
||
docker run --rm -v mining-system_name:/data -v $(pwd):/backup alpine tar czf /backup/name-volume-backup.tar.gz -C /data .
|
||
|
||
# 恢复
|
||
docker load < mining-system-backup.tar
|
||
```
|
||
|
||
---
|
||
|
||
## 技术支持
|
||
|
||
如有问题,请联系神东煤炭集团西安研发团队。 |