Files
host_message/DEPLOY_NOTES.md
2026-02-13 12:33:43 +08:00

119 lines
3.5 KiB
Markdown

# 部署脚本优化报告
## 🚨 主要问题修复
### 1. Python环境管理问题
**问题**: Ubuntu 24.04 使用了 PEP 668 外部管理环境策略,禁止直接使用 pip 安装包到系统环境
**解决方案**:
- 使用 Python 虚拟环境 (`python3 -m venv`)
- 所有依赖安装在隔离的虚拟环境中
- 应用启动时自动激活虚拟环境
### 2. 环境重复安装优化
**改进**:
- 添加环境检测功能,避免重复安装已存在的组件
- 智能判断:基础环境 / 虚拟环境 / 完全安装
- 如果服务器已有环境,跳过系统依赖安装
### 3. 文件上传修复
**问题**: `database/*` 被排除,导致 `ip_list.json` 无法上传
**解决方案**:
- 移除了 `database/*` 的排除规则
- `ip_list.json` 现在会正确上传到服务器
## 📁 文件结构改进
```
服务器部署结构:
/home/ubuntu/
├── host_message_venv/ # Python虚拟环境
│ ├── bin/python # 虚拟环境Python解释器
│ ├── bin/pip # 虚拟环境pip
│ └── lib/python3.12/ # 依赖包安装位置
└── host_message/ # 应用代码
├── main.py # 主应用文件
├── database/
│ └── ip_list.json # ✅ 现在会正确上传
├── start_app.sh # 启动脚本(使用虚拟环境)
├── debug_app.sh # 调试脚本
└── logs/
└── supervisor.log # 应用日志
```
## 🔧 技术改进
### 虚拟环境管理
- 创建独立的Python虚拟环境 `/home/ubuntu/host_message_venv`
- 所有依赖安装在虚拟环境中,避免系统污染
- 启动脚本自动激活虚拟环境
### 智能部署流程
```bash
1. 检查环境状态
├── 完全已安装 → 跳过所有安装
├── 部分安装 → 只创建虚拟环境
└── 未安装 → 完整安装流程
2. 虚拟环境管理
├── 检测现有虚拟环境
├── 重新创建(确保干净)
└── 安装所有Python依赖
3. 应用部署
├── 代码解压
├── 启动脚本配置
└── Supervisor进程管理
```
### 错误诊断增强
- 改进的调试脚本,支持虚拟环境
- 详细的环境信息输出
- 更好的错误日志收集
## 🚀 使用指南
### 1. 预检查(推荐)
```bash
./pre_deploy_check.sh
```
### 2. 执行部署
```bash
./deploy.sh
```
### 3. 应用管理
```bash
# 查看状态
ssh ubuntu@6.6.6.86 'sudo supervisorctl status host_message'
# 重启应用
ssh ubuntu@6.6.6.86 'sudo supervisorctl restart host_message'
# 查看日志
ssh ubuntu@6.6.6.86 'tail -f /home/ubuntu/host_message/logs/supervisor.log'
# 调试应用
ssh ubuntu@6.6.6.86 'cd /home/ubuntu/host_message && ./debug_app.sh'
```
## ✅ 问题解决确认
-**Python环境管理**: 使用虚拟环境避免 externally-managed-environment 错误
-**依赖安装**: 所有包正确安装在虚拟环境中
-**文件上传**: ip_list.json 正确上传到服务器
-**环境检测**: 智能跳过已安装的组件
-**进程管理**: 正确的启动和监控配置
-**错误诊断**: 详细的调试信息和日志
## 🎯 预期结果
部署成功后,应用将:
1. 在独立的Python虚拟环境中运行
2. 自动启动并保持运行状态
3. 监听 8888 端口提供服务
4. 包含完整的 ip_list.json 配置
5. 具备自动重启和日志管理功能
访问地址: http://6.6.6.86:8888