3.5 KiB
3.5 KiB
部署脚本优化报告
🚨 主要问题修复
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 - 所有依赖安装在虚拟环境中,避免系统污染
- 启动脚本自动激活虚拟环境
智能部署流程
1. 检查环境状态
├── 完全已安装 → 跳过所有安装
├── 部分安装 → 只创建虚拟环境
└── 未安装 → 完整安装流程
2. 虚拟环境管理
├── 检测现有虚拟环境
├── 重新创建(确保干净)
└── 安装所有Python依赖
3. 应用部署
├── 代码解压
├── 启动脚本配置
└── Supervisor进程管理
错误诊断增强
- 改进的调试脚本,支持虚拟环境
- 详细的环境信息输出
- 更好的错误日志收集
🚀 使用指南
1. 预检查(推荐)
./pre_deploy_check.sh
2. 执行部署
./deploy.sh
3. 应用管理
# 查看状态
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 正确上传到服务器
- ✅ 环境检测: 智能跳过已安装的组件
- ✅ 进程管理: 正确的启动和监控配置
- ✅ 错误诊断: 详细的调试信息和日志
🎯 预期结果
部署成功后,应用将:
- 在独立的Python虚拟环境中运行
- 自动启动并保持运行状态
- 监听 8888 端口提供服务
- 包含完整的 ip_list.json 配置
- 具备自动重启和日志管理功能
访问地址: http://6.6.6.86:8888