# ZJPB 服务器更新标准流程

## 适用场景
- 代码更新后需要部署到服务器
- 数据库结构变更需要迁移
- 新功能上线

## 服务器环境
- **部署方式**: 1Panel 管理
- **项目路径**: `/opt/1panel/apps/zjpb`
- **运行方式**: Python 直接运行或 Gunicorn
- **数据库**: MySQL/MariaDB

---

## 标准更新流程

### 第一步：提交代码到 Git

```bash
# 在本地开发环境
git add .
git commit -m "feat: 功能描述"
git push origin master
```

### 第二步：登录服务器

```bash
ssh your_username@server_ip
```

### 第三步：进入项目目录

```bash
cd /opt/1panel/apps/zjpb
```

### 第四步：停止应用

```bash
# 查找进程
ps aux | grep python | grep -v grep

# 停止进程（使用进程ID）
kill <PID>

# 或者强制停止
pkill -f "python app.py"
```

### 第五步：拉取最新代码

```bash
git pull origin master
```

### 第六步：激活虚拟环境

```bash
source venv/bin/activate
```

### 第七步：安装/更新依赖（如有）

```bash
pip install -r requirements.txt
```

### 第八步：运行数据库迁移（如有）

```bash
# 根据具体的迁移脚本名称
python migrate_xxx.py
```

### 第九步：启动应用

```bash
# 后台运行
nohup python app.py > app.log 2>&1 &

# 或使用 Gunicorn
nohup gunicorn -w 4 -b 0.0.0.0:5000 app:app > gunicorn.log 2>&1 &
```

### 第十步：验证启动成功

```bash
# 检查进程
ps aux | grep python | grep -v grep

# 查看日志
tail -f app.log

# 测试访问
curl http://localhost:5000/
```

---

## 快速命令（一键执行）

```bash
# 进入目录并更新
cd /opt/1panel/apps/zjpb && \
pkill -f "python app.py" && \
git pull origin master && \
source venv/bin/activate && \
nohup python app.py > app.log 2>&1 & && \
tail -f app.log
```

---

## 注意事项

1. **数据库迁移前必须备份**
   ```bash
   mysqldump -u root -p zjpb > backup_$(date +%Y%m%d_%H%M%S).sql
   ```

2. **检查环境变量配置**
   - 确保 `.env` 文件存在且配置正确
   - 新增的环境变量需要手动添加

3. **日志监控**
   - 启动后观察日志至少 1-2 分钟
   - 确认没有错误信息

4. **回滚方案**
   ```bash
   # 如果出现问题，回滚到上一个版本
   git reset --hard HEAD~1
   # 重启应用
   ```

---

## 常见问题

### 问题1：端口被占用
```bash
# 查找占用端口的进程
lsof -i :5000
# 杀死进程
kill -9 <PID>
```

### 问题2：虚拟环境找不到
```bash
# 重新创建虚拟环境
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```

### 问题3：数据库连接失败
```bash
# 检查数据库服务状态
systemctl status mysql
# 检查 .env 配置
cat .env | grep DATABASE
```

---

**创建日期**: 2025-02-07
**最后更新**: 2025-02-07
