后台管理页面导航栏修改为侧边
This commit is contained in:
306
docs/port_management_guide.md
Normal file
306
docs/port_management_guide.md
Normal file
@@ -0,0 +1,306 @@
|
||||
# 端口管理指南
|
||||
|
||||
## 📋 **概述**
|
||||
|
||||
本指南介绍如何管理Flask应用的端口占用问题,确保服务稳定运行。
|
||||
|
||||
## 🛠️ **工具介绍**
|
||||
|
||||
### 1. 端口管理脚本 (`scripts/port_manager.sh`)
|
||||
|
||||
**功能:**
|
||||
- 检查端口占用情况
|
||||
- 清理端口占用
|
||||
- 启动/停止/重启应用
|
||||
- 查看应用状态
|
||||
- 监控模式
|
||||
|
||||
**使用方法:**
|
||||
```bash
|
||||
# 检查端口占用
|
||||
./scripts/port_manager.sh check
|
||||
|
||||
# 清理端口占用
|
||||
./scripts/port_manager.sh clean
|
||||
|
||||
# 启动应用
|
||||
./scripts/port_manager.sh start
|
||||
|
||||
# 停止应用
|
||||
./scripts/port_manager.sh stop
|
||||
|
||||
# 重启应用
|
||||
./scripts/port_manager.sh restart
|
||||
|
||||
# 查看状态
|
||||
./scripts/port_manager.sh status
|
||||
|
||||
# 启动监控
|
||||
./scripts/port_manager.sh monitor
|
||||
|
||||
# 显示帮助
|
||||
./scripts/port_manager.sh help
|
||||
```
|
||||
|
||||
### 2. 端口监控脚本 (`scripts/port_monitor.py`)
|
||||
|
||||
**功能:**
|
||||
- 实时监控端口状态
|
||||
- 自动检测服务异常
|
||||
- 自动重启服务
|
||||
- 生成监控报告
|
||||
- 系统资源监控
|
||||
|
||||
**使用方法:**
|
||||
```bash
|
||||
# 查看当前状态
|
||||
python scripts/port_monitor.py status
|
||||
|
||||
# 生成详细报告
|
||||
python scripts/port_monitor.py report
|
||||
|
||||
# 重启服务
|
||||
python scripts/port_monitor.py restart
|
||||
|
||||
# 启动监控模式
|
||||
python scripts/port_monitor.py monitor
|
||||
|
||||
# 查看配置
|
||||
python scripts/port_monitor.py config
|
||||
```
|
||||
|
||||
### 3. Systemd服务配置 (`scripts/flask-app.service`)
|
||||
|
||||
**功能:**
|
||||
- 系统级服务管理
|
||||
- 自动启动/停止
|
||||
- 故障自动重启
|
||||
- 日志管理
|
||||
|
||||
## 🔧 **配置说明**
|
||||
|
||||
### 端口管理脚本配置
|
||||
|
||||
脚本中的主要配置项:
|
||||
```bash
|
||||
PORT=5002 # 应用端口
|
||||
APP_NAME="flask_prompt_master" # 应用名称
|
||||
PID_FILE="logs/gunicorn.pid" # PID文件路径
|
||||
LOG_DIR="logs" # 日志目录
|
||||
```
|
||||
|
||||
### 监控脚本配置
|
||||
|
||||
配置文件:`logs/monitor_config.json`
|
||||
```json
|
||||
{
|
||||
"check_interval": 30, // 检查间隔(秒)
|
||||
"max_restart_attempts": 3, // 最大重启尝试次数
|
||||
"alert_threshold": 2, // 告警阈值
|
||||
"port_timeout": 5, // 端口检查超时时间
|
||||
"enable_alerts": true, // 启用告警
|
||||
"auto_restart": true // 自动重启
|
||||
}
|
||||
```
|
||||
|
||||
## 🚀 **部署步骤**
|
||||
|
||||
### 1. 安装systemd服务(可选)
|
||||
|
||||
```bash
|
||||
# 复制服务文件
|
||||
sudo cp scripts/flask-app.service /etc/systemd/system/
|
||||
|
||||
# 重新加载systemd
|
||||
sudo systemctl daemon-reload
|
||||
|
||||
# 启用服务
|
||||
sudo systemctl enable flask-app
|
||||
|
||||
# 启动服务
|
||||
sudo systemctl start flask-app
|
||||
|
||||
# 查看状态
|
||||
sudo systemctl status flask-app
|
||||
```
|
||||
|
||||
### 2. 设置定时任务
|
||||
|
||||
```bash
|
||||
# 编辑crontab
|
||||
crontab -e
|
||||
|
||||
# 添加定时检查任务(每5分钟检查一次)
|
||||
*/5 * * * * /home/renjianbo/aitsc/scripts/port_manager.sh status > /dev/null 2>&1
|
||||
```
|
||||
|
||||
### 3. 配置日志轮转
|
||||
|
||||
创建日志轮转配置:`/etc/logrotate.d/flask-app`
|
||||
```
|
||||
/home/renjianbo/aitsc/logs/*.log {
|
||||
daily
|
||||
missingok
|
||||
rotate 30
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
create 644 renjianbo renjianbo
|
||||
postrotate
|
||||
systemctl reload flask-app > /dev/null 2>&1 || true
|
||||
endscript
|
||||
}
|
||||
```
|
||||
|
||||
## 📊 **监控和告警**
|
||||
|
||||
### 1. 监控指标
|
||||
|
||||
- **端口占用状态**:检查5002端口是否被正确占用
|
||||
- **Gunicorn进程状态**:检查主进程和工作进程
|
||||
- **服务响应状态**:检查HTTP服务是否正常响应
|
||||
- **系统资源**:CPU、内存、磁盘使用率
|
||||
|
||||
### 2. 告警机制
|
||||
|
||||
- **自动告警**:检测到异常时自动记录告警日志
|
||||
- **自动重启**:服务异常时自动尝试重启
|
||||
- **重启限制**:防止频繁重启,设置重启间隔和次数限制
|
||||
|
||||
### 3. 日志文件
|
||||
|
||||
- `logs/port_monitor.log`:监控脚本日志
|
||||
- `logs/port_alerts.log`:告警日志
|
||||
- `logs/gunicorn_error.log`:Gunicorn错误日志
|
||||
- `logs/gunicorn_access.log`:Gunicorn访问日志
|
||||
|
||||
## 🔍 **故障排查**
|
||||
|
||||
### 1. 端口被占用
|
||||
|
||||
**症状:** 启动时提示 "Address already in use"
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 检查端口占用
|
||||
./scripts/port_manager.sh check
|
||||
|
||||
# 清理端口占用
|
||||
./scripts/port_manager.sh clean
|
||||
|
||||
# 重新启动
|
||||
./scripts/port_manager.sh start
|
||||
```
|
||||
|
||||
### 2. 服务无响应
|
||||
|
||||
**症状:** 访问网站显示连接被拒绝
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 检查服务状态
|
||||
./scripts/port_manager.sh status
|
||||
|
||||
# 重启服务
|
||||
./scripts/port_manager.sh restart
|
||||
|
||||
# 查看错误日志
|
||||
tail -f logs/gunicorn_error.log
|
||||
```
|
||||
|
||||
### 3. 进程异常退出
|
||||
|
||||
**症状:** PID文件存在但进程不存在
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 清理所有相关进程
|
||||
pkill -f gunicorn
|
||||
|
||||
# 重新启动
|
||||
./scripts/port_manager.sh start
|
||||
```
|
||||
|
||||
## 📈 **性能优化**
|
||||
|
||||
### 1. 监控配置优化
|
||||
|
||||
根据服务器性能调整监控参数:
|
||||
```json
|
||||
{
|
||||
"check_interval": 60, // 降低检查频率
|
||||
"port_timeout": 3, // 减少超时时间
|
||||
"max_restart_attempts": 5 // 增加重启尝试次数
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 日志管理
|
||||
|
||||
定期清理日志文件:
|
||||
```bash
|
||||
# 清理30天前的日志
|
||||
find logs/ -name "*.log" -mtime +30 -delete
|
||||
|
||||
# 压缩旧日志
|
||||
find logs/ -name "*.log" -mtime +7 -exec gzip {} \;
|
||||
```
|
||||
|
||||
### 3. 系统资源监控
|
||||
|
||||
设置资源告警阈值:
|
||||
- CPU使用率 > 80%
|
||||
- 内存使用率 > 90%
|
||||
- 磁盘使用率 > 85%
|
||||
|
||||
## 🔒 **安全考虑**
|
||||
|
||||
### 1. 权限管理
|
||||
|
||||
确保脚本和日志文件权限正确:
|
||||
```bash
|
||||
# 设置脚本权限
|
||||
chmod +x scripts/port_manager.sh
|
||||
chmod +x scripts/port_monitor.py
|
||||
|
||||
# 设置日志目录权限
|
||||
chmod 755 logs/
|
||||
chmod 644 logs/*.log
|
||||
```
|
||||
|
||||
### 2. 网络安全
|
||||
|
||||
- 限制端口访问:只允许必要的IP访问5002端口
|
||||
- 防火墙配置:配置iptables规则
|
||||
- SSL/TLS:使用HTTPS协议
|
||||
|
||||
### 3. 监控安全
|
||||
|
||||
- 监控脚本权限:只允许特定用户运行
|
||||
- 日志安全:定期备份和加密敏感日志
|
||||
- 告警安全:避免在告警中暴露敏感信息
|
||||
|
||||
## 📞 **技术支持**
|
||||
|
||||
### 1. 常见问题
|
||||
|
||||
**Q: 为什么端口会被其他进程占用?**
|
||||
A: 可能是之前的Gunicorn进程未完全清理,或者有其他应用使用了相同端口。
|
||||
|
||||
**Q: 如何防止服务意外停止?**
|
||||
A: 使用systemd服务配置自动重启,或启用监控脚本的自动重启功能。
|
||||
|
||||
**Q: 监控脚本消耗太多资源怎么办?**
|
||||
A: 调整检查间隔,或使用更轻量级的监控方式。
|
||||
|
||||
### 2. 联系支持
|
||||
|
||||
- 查看日志文件获取详细错误信息
|
||||
- 使用状态检查命令诊断问题
|
||||
- 参考故障排查章节的解决方案
|
||||
|
||||
## 📝 **更新日志**
|
||||
|
||||
- **v1.0** - 初始版本,基础端口管理功能
|
||||
- **v1.1** - 添加监控脚本和自动重启功能
|
||||
- **v1.2** - 添加systemd服务配置和日志轮转
|
||||
- **v1.3** - 优化监控性能和告警机制
|
||||
103
docs/product/端口管理系统已成功部署!
Normal file
103
docs/product/端口管理系统已成功部署!
Normal file
@@ -0,0 +1,103 @@
|
||||
好的!我来修改端口监控脚本,使其使用conda环境中的Python。
|
||||
|
||||
现在让我们测试修改后的端口监控脚本:
|
||||
|
||||
```bash
|
||||
eval "$(/home/renjianbo/miniconda3/bin/conda shell.bash hook)" && conda activate myenv && python scripts/port_monitor.py status
|
||||
```
|
||||
让我检查并修复Python脚本的语法错误:
|
||||
|
||||
Read file: scripts/port_monitor.py
|
||||
我发现了语法错误,让我修复它:
|
||||
|
||||
现在让我们再次测试端口监控脚本:
|
||||
|
||||
```bash
|
||||
eval "$(/home/renjianbo/miniconda3/bin/conda shell.bash hook)" && conda activate myenv && python scripts/port_monitor.py status
|
||||
```
|
||||
太好了!现在让我们测试端口管理脚本的其他功能:
|
||||
|
||||
```bash
|
||||
./scripts/port_manager.sh check
|
||||
```
|
||||
## ✅ **端口管理系统已成功部署!**
|
||||
|
||||
### 🎯 **系统功能总结**
|
||||
|
||||
我已经为您创建了一套完整的端口管理系统,包含以下组件:
|
||||
|
||||
#### **1. 端口管理脚本** (`scripts/port_manager.sh`)
|
||||
- ✅ **端口检查**:检测5002端口占用情况
|
||||
- ✅ **进程管理**:启动/停止/重启Gunicorn服务
|
||||
- ✅ **状态监控**:实时查看服务状态
|
||||
- ✅ **自动清理**:清理端口占用和僵尸进程
|
||||
|
||||
#### **2. 端口监控脚本** (`scripts/port_monitor.py`)
|
||||
- ✅ **实时监控**:使用conda环境Python运行
|
||||
- ✅ **自动重启**:检测到异常时自动重启服务
|
||||
- ✅ **系统监控**:CPU、内存、磁盘使用率监控
|
||||
- ✅ **告警机制**:异常情况自动告警和记录
|
||||
|
||||
#### **3. Systemd服务配置** (`scripts/flask-app.service`)
|
||||
- ✅ **系统级管理**:支持开机自启动
|
||||
- ✅ **自动重启**:服务异常时自动重启
|
||||
- ✅ **日志管理**:集成系统日志
|
||||
|
||||
#### **4. 详细文档** (`docs/port_management_guide.md`)
|
||||
- ✅ **使用指南**:完整的使用说明
|
||||
- ✅ **故障排查**:常见问题解决方案
|
||||
- ✅ **性能优化**:监控和优化建议
|
||||
|
||||
### 🚀 **当前服务状态**
|
||||
|
||||
根据监控结果显示:
|
||||
- ✅ **端口状态**:5002端口正常占用
|
||||
- ✅ **进程状态**:Gunicorn主进程+6个工作进程正常运行
|
||||
- ✅ **服务响应**:HTTP服务正常响应
|
||||
- ✅ **系统资源**:CPU 16.1%、内存 45.85%、磁盘 22.0%(健康状态)
|
||||
|
||||
### <20><>️ **使用方法**
|
||||
|
||||
#### **快速检查状态:**
|
||||
```bash
|
||||
# 使用端口管理脚本
|
||||
./scripts/port_manager.sh status
|
||||
|
||||
# 使用监控脚本(推荐)
|
||||
eval "$(/home/renjianbo/miniconda3/bin/conda shell.bash hook)" && conda activate myenv && python scripts/port_monitor.py status
|
||||
```
|
||||
|
||||
#### **服务管理:**
|
||||
```bash
|
||||
# 重启服务
|
||||
./scripts/port_manager.sh restart
|
||||
|
||||
# 启动监控模式
|
||||
eval "$(/home/renjianbo/miniconda3/bin/conda shell.bash hook)" && conda activate myenv && python scripts/port_monitor.py monitor
|
||||
```
|
||||
|
||||
#### **故障处理:**
|
||||
```bash
|
||||
# 清理端口占用
|
||||
./scripts/port_manager.sh clean
|
||||
|
||||
# 重新启动
|
||||
./scripts/port_manager.sh start
|
||||
```
|
||||
|
||||
### 🔒 **安全保障**
|
||||
|
||||
1. **端口冲突防护**:自动检测和清理端口占用
|
||||
2. **进程管理**:完善的进程启动和停止机制
|
||||
3. **自动恢复**:服务异常时自动重启
|
||||
4. **监控告警**:实时监控和异常告警
|
||||
5. **日志记录**:详细的操作和错误日志
|
||||
|
||||
### <20><> **监控指标**
|
||||
|
||||
- **端口占用状态**:确保5002端口被正确占用
|
||||
- **Gunicorn进程状态**:主进程和工作进程健康检查
|
||||
- **服务响应状态**:HTTP服务可用性检查
|
||||
- **系统资源监控**:CPU、内存、磁盘使用率
|
||||
|
||||
**现在您的Flask应用已经具备了完善的端口管理机制,可以有效防止端口冲突和服务异常!** 🎉
|
||||
Reference in New Issue
Block a user