Files
zjpb.net/TROUBLESHOOTING_v2.6.0.md
Jowe 6b71fa4351 docs: 添加v2.6.0故障排查指南
包含部署过程中常见问题的诊断和解决方案。

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:44:42 +08:00

346 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ZJPB v2.6.0 部署故障排查指南
## 问题现象
```bash
supervisorctl restart zjpb
zjpb: ERROR (no such process)
```
---
## 🔍 故障诊断步骤
### 1. 检查应用当前运行状态
```bash
cd /opt/1panel/apps/zjpb
# 检查Python进程
ps aux | grep app.py
ps aux | grep gunicorn | grep zjpb
# 检查端口占用通常是5000或8000
netstat -tlnp | grep :5000
netstat -tlnp | grep :8000
```
**预期结果**:
- 如果有进程说明应用在运行只是不在supervisor管理下
- 如果没有进程,说明应用已停止
---
### 2. 检查应用管理方式
在1Panel环境中应用可能通过以下方式管理
#### 方式A: systemd服务
```bash
# 检查是否有systemd服务
systemctl list-units | grep zjpb
ls -la /etc/systemd/system/zjpb.service
# 如果存在使用systemctl管理
systemctl status zjpb
systemctl restart zjpb
systemctl start zjpb
```
#### 方式B: manage.sh脚本
```bash
# 检查是否有管理脚本
ls -la manage.sh
cat manage.sh
# 如果存在,使用脚本管理
./manage.sh status
./manage.sh restart
./manage.sh start
```
#### 方式C: 1Panel内置管理
```bash
# 检查1Panel容器
docker ps | grep zjpb
# 如果是Docker容器
docker restart zjpb
```
#### 方式D: supervisor配置问题
```bash
# 检查supervisor配置
ls -la /etc/supervisor/conf.d/zjpb.conf
cat /etc/supervisor/conf.d/zjpb.conf
# 重新加载supervisor配置
supervisorctl reread
supervisorctl update
supervisorctl status
```
---
## 🚀 快速解决方案
### 方案1: 手动启动(推荐,最快)
```bash
cd /opt/1panel/apps/zjpb
# 1. 激活虚拟环境
source venv/bin/activate
# 2. 安装新依赖
pip install Flask-Limiter==3.5.0
# 3. 查找并停止旧进程
pkill -f "gunicorn.*zjpb"
pkill -f "python.*app.py"
# 4. 启动应用(后台运行)
nohup gunicorn -w 4 -b 0.0.0.0:5000 wsgi:app > logs/gunicorn.log 2>&1 &
# 或者如果有wsgi.py
nohup gunicorn -c gunicorn_config.py wsgi:app > logs/gunicorn.log 2>&1 &
# 5. 验证启动
ps aux | grep gunicorn
netstat -tlnp | grep :5000
# 6. 查看日志
tail -f logs/gunicorn.log
```
### 方案2: 使用manage.sh如果存在
```bash
cd /opt/1panel/apps/zjpb
# 安装依赖
source venv/bin/activate
pip install Flask-Limiter==3.5.0
# 使用脚本重启
./manage.sh stop
./manage.sh start
./manage.sh status
```
### 方案3: 配置supervisor推荐长期方案
如果要使用supervisor管理需要创建配置文件
```bash
# 1. 创建supervisor配置
cat > /etc/supervisor/conf.d/zjpb.conf << 'EOF'
[program:zjpb]
directory=/opt/1panel/apps/zjpb
command=/opt/1panel/apps/zjpb/venv/bin/gunicorn -c gunicorn_config.py wsgi:app
autostart=true
autorestart=true
startsecs=10
startretries=3
user=root
redirect_stderr=true
stdout_logfile=/opt/1panel/apps/zjpb/logs/supervisor.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
environment=PATH="/opt/1panel/apps/zjpb/venv/bin"
EOF
# 2. 重新加载配置
supervisorctl reread
supervisorctl update
# 3. 启动应用
supervisorctl start zjpb
supervisorctl status zjpb
```
### 方案4: 通过1Panel Web界面
1. 登录1Panel管理面板
2. 找到"网站"或"应用"菜单
3. 找到zjpb应用
4. 点击"停止" → 等待 → 点击"启动"
---
## ✅ 部署验证
启动成功后,执行以下验证:
```bash
# 1. 检查进程
ps aux | grep gunicorn
# 2. 检查端口
netstat -tlnp | grep :5000
# 3. 测试HTTP访问
curl http://localhost:5000/
# 4. 查看日志
tail -50 logs/gunicorn.log
tail -50 logs/error.log
# 5. 测试详情页替换为实际的code
curl http://localhost:5000/site/12345678
```
**预期结果**:
- 进程存在
- 端口被监听
- HTTP返回200
- 日志无错误
---
## 🐛 常见错误处理
### 错误1: ImportError: No module named 'utils.rate_limiter'
**原因**: 新文件未正确拉取
**解决**:
```bash
cd /opt/1panel/apps/zjpb
git status
git pull origin master
ls -la utils/rate_limiter.py # 确认文件存在
```
### 错误2: ModuleNotFoundError: No module named 'flask_limiter'
**原因**: 依赖未安装
**解决**:
```bash
source venv/bin/activate
pip install Flask-Limiter==3.5.0
```
### 错误3: 端口被占用
**现象**: `Address already in use`
**解决**:
```bash
# 查找占用端口的进程
lsof -i :5000
netstat -tlnp | grep :5000
# 停止旧进程
kill -9 <PID>
# 或批量停止
pkill -f "gunicorn.*zjpb"
```
### 错误4: Permission denied
**解决**:
```bash
# 确保目录权限
chown -R root:root /opt/1panel/apps/zjpb
chmod +x manage.sh # 如果有
```
---
## 📋 完整的重启流程(推荐)
```bash
#!/bin/bash
# 安全的重启流程
cd /opt/1panel/apps/zjpb
echo "=== Step 1: 备份当前代码 ==="
git stash
echo "=== Step 2: 拉取最新代码 ==="
git pull origin master
echo "=== Step 3: 激活虚拟环境 ==="
source venv/bin/activate
echo "=== Step 4: 安装依赖 ==="
pip install Flask-Limiter==3.5.0
echo "=== Step 5: 停止旧进程 ==="
pkill -f "gunicorn.*zjpb" || echo "No process to kill"
sleep 2
echo "=== Step 6: 启动应用 ==="
nohup gunicorn -w 4 -b 0.0.0.0:5000 wsgi:app > logs/gunicorn.log 2>&1 &
sleep 3
echo "=== Step 7: 验证启动 ==="
if ps aux | grep -v grep | grep gunicorn | grep zjpb; then
echo "✅ 应用启动成功"
echo "进程信息:"
ps aux | grep gunicorn | grep zjpb
else
echo "❌ 应用启动失败"
echo "查看日志:"
tail -20 logs/gunicorn.log
exit 1
fi
echo "=== Step 8: 测试访问 ==="
curl -s http://localhost:5000/ | head -5
echo ""
echo "✅ 部署完成!"
```
将上述脚本保存为 `deploy_v2.6.sh`,然后执行:
```bash
chmod +x deploy_v2.6.sh
./deploy_v2.6.sh
```
---
## 📞 需要提供的信息
如果以上方案都无法解决,请提供以下信息:
```bash
# 1. 当前进程状态
ps aux | grep python
ps aux | grep gunicorn
# 2. 端口占用
netstat -tlnp | grep -E ":(5000|8000)"
# 3. 项目文件
ls -la /opt/1panel/apps/zjpb/
# 4. 日志内容
tail -50 /opt/1panel/apps/zjpb/logs/error.log
tail -50 /opt/1panel/apps/zjpb/logs/gunicorn.log
# 5. Git状态
cd /opt/1panel/apps/zjpb
git status
git log --oneline -3
# 6. Python环境
which python
python --version
pip list | grep Flask
```
---
**最快解决方案**: 使用方案1手动启动后续再配置自动化管理。
**推荐方案**: 配置systemd服务更稳定或使用1Panel内置管理。