191 lines
5.2 KiB
Markdown
191 lines
5.2 KiB
Markdown
|
|
# ZJPB 开发进度 - 2026-03-12
|
|||
|
|
|
|||
|
|
## 📦 版本信息
|
|||
|
|
- **工作日期**: 2026-03-12
|
|||
|
|
- **部署状态**: ✅ 新服务器部署完成,应用正常运行
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 本次完成内容
|
|||
|
|
|
|||
|
|
### 1️⃣ 更换 Gitea 仓库地址
|
|||
|
|
|
|||
|
|
**原因**: 原服务器出现问题,需要迁移到新服务器
|
|||
|
|
|
|||
|
|
**操作**:
|
|||
|
|
- 旧地址: `http://server.zjpb.net:3000/jowelin/zjpb.git`
|
|||
|
|
- 新地址: `http://175.178.72.171:3000/jowelin/zjpb.net.git`
|
|||
|
|
- 访问令牌: `d507007d9bd411a6468a424441cf534e32e71020`
|
|||
|
|
- 已配置 git remote 并成功推送代码
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 2️⃣ 新服务器环境部署(1Panel)
|
|||
|
|
|
|||
|
|
**服务器信息**:
|
|||
|
|
- IP: 175.178.72.171
|
|||
|
|
- 环境: 1Panel + Docker
|
|||
|
|
- MySQL 容器: `1Panel-mysql-2Z4D` (MySQL 8.4.8)
|
|||
|
|
- 项目路径: `/opt/1panel/apps/zjpb`
|
|||
|
|
|
|||
|
|
**部署步骤**:
|
|||
|
|
1. ✅ 克隆项目代码
|
|||
|
|
2. ✅ 创建数据库 `zjpb`
|
|||
|
|
3. ✅ 配置 .env 文件
|
|||
|
|
4. ✅ 创建 Python 虚拟环境
|
|||
|
|
5. ✅ 安装依赖 (requirements.txt)
|
|||
|
|
6. ✅ 初始化数据库 (init_db.py)
|
|||
|
|
7. ✅ 配置 Systemd 服务
|
|||
|
|
8. ✅ 配置反向代理
|
|||
|
|
9. ✅ 配置 SSL 证书
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3️⃣ Systemd 服务配置
|
|||
|
|
|
|||
|
|
**服务文件**: `/etc/systemd/system/zjpb.service`
|
|||
|
|
|
|||
|
|
```ini
|
|||
|
|
[Unit]
|
|||
|
|
Description=ZJPB Flask Application
|
|||
|
|
After=network.target mysql.service
|
|||
|
|
|
|||
|
|
[Service]
|
|||
|
|
Type=simple
|
|||
|
|
User=root
|
|||
|
|
WorkingDirectory=/opt/1panel/apps/zjpb
|
|||
|
|
Environment="PATH=/opt/1panel/apps/zjpb/venv/bin"
|
|||
|
|
ExecStart=/opt/1panel/apps/zjpb/venv/bin/gunicorn -c gunicorn_config.py wsgi:app
|
|||
|
|
Restart=on-failure
|
|||
|
|
RestartSec=5
|
|||
|
|
|
|||
|
|
[Install]
|
|||
|
|
WantedBy=multi-user.target
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**关键修改**:
|
|||
|
|
- `gunicorn_config.py`: `daemon = False` (systemd 管理进程)
|
|||
|
|
- 启动命令: `wsgi:app` (不是 `app:create_app()`)
|
|||
|
|
- 已设置开机自启: `systemctl enable zjpb`
|
|||
|
|
|
|||
|
|
**常用命令**:
|
|||
|
|
```bash
|
|||
|
|
systemctl start zjpb # 启动
|
|||
|
|
systemctl stop zjpb # 停止
|
|||
|
|
systemctl restart zjpb # 重启
|
|||
|
|
systemctl status zjpb # 状态
|
|||
|
|
journalctl -u zjpb -f # 实时日志
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 4️⃣ 数据库配置
|
|||
|
|
|
|||
|
|
**连接信息**:
|
|||
|
|
- 主机: localhost
|
|||
|
|
- 端口: 3306
|
|||
|
|
- 用户: zjpb_user
|
|||
|
|
- 密码: M3bzYwtiMWWneaTW
|
|||
|
|
- 数据库: zjpb
|
|||
|
|
|
|||
|
|
**初始化状态**:
|
|||
|
|
- ✅ 所有表已创建
|
|||
|
|
- ✅ 默认管理员账号已创建 (admin/admin123)
|
|||
|
|
- ⚠️ 原数据未恢复(.ibd 文件恢复失败)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 5️⃣ 反向代理和 SSL
|
|||
|
|
|
|||
|
|
**配置**:
|
|||
|
|
- ✅ 1Panel 中配置反向代理: `http://127.0.0.1:5000`
|
|||
|
|
- ✅ SSL 证书已配置
|
|||
|
|
- ✅ 防火墙已开放 443 端口
|
|||
|
|
- ⚠️ HSTS 暂未开启(建议稳定运行后再开启)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 6️⃣ 数据恢复尝试(未成功)
|
|||
|
|
|
|||
|
|
**尝试方案**:
|
|||
|
|
1. ❌ 直接导入 .ibd 文件 - 缺少 .cfg 配置文件
|
|||
|
|
2. ❌ 本地 Docker 挂载恢复 - 表结构不匹配
|
|||
|
|
3. ❌ 服务器端 .ibd 导入 - Schema mismatch 错误
|
|||
|
|
|
|||
|
|
**失败原因**:
|
|||
|
|
- 只有 .ibd 物理文件,缺少 .cfg 元数据文件
|
|||
|
|
- MySQL 版本或表结构可能不同
|
|||
|
|
- InnoDB 表空间导入需要完整的配置信息
|
|||
|
|
|
|||
|
|
**结论**: 放弃数据恢复,使用全新数据库
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📂 修改文件清单
|
|||
|
|
|
|||
|
|
| 文件 | 类型 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `.git/config` | 修改 | 更新 remote 地址和访问令牌 |
|
|||
|
|
| `PROGRESS_2026-02-23.md` | 修改 | 更新 Gitea 地址 |
|
|||
|
|
| `/etc/systemd/system/zjpb.service` | 新增 | Systemd 服务配置 |
|
|||
|
|
| `gunicorn_config.py` | 修改 | daemon=False |
|
|||
|
|
| `.env` | 修改 | 数据库密码修正 |
|
|||
|
|
| `restore_ibd.sh` | 新增 | 数据恢复脚本(未使用) |
|
|||
|
|
| `create_tables.sql` | 新增 | 表结构 SQL(测试用) |
|
|||
|
|
| `restore_db_from_backup.sh` | 新增 | 备份恢复脚本(未使用) |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 待完成(下次工作)
|
|||
|
|
|
|||
|
|
- [ ] 手动添加核心数据(网站、标签)
|
|||
|
|
- [ ] 测试所有功能是否正常
|
|||
|
|
- [ ] 考虑是否开启 HSTS
|
|||
|
|
- [ ] 配置定时备份任务
|
|||
|
|
- [ ] 优化部署流程文档
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 💡 经验总结
|
|||
|
|
|
|||
|
|
### 成功经验
|
|||
|
|
1. **Systemd 服务管理**: 比 nohup 更可靠,支持自动重启和日志管理
|
|||
|
|
2. **1Panel 部署**: 简化了 MySQL、Nginx 等服务的管理
|
|||
|
|
3. **Git 令牌认证**: 将令牌嵌入 remote URL,避免每次输入密码
|
|||
|
|
|
|||
|
|
### 遇到的问题
|
|||
|
|
1. **gunicorn 启动命令错误**: `app:create_app()` 括号导致 bash 语法错误
|
|||
|
|
2. **daemon 模式冲突**: gunicorn daemon=True 与 systemd Type=simple 冲突
|
|||
|
|
3. **.ibd 文件恢复失败**: 缺少 .cfg 文件,无法跨版本/实例恢复
|
|||
|
|
|
|||
|
|
### 学到的知识
|
|||
|
|
1. **InnoDB 表空间导入**: 需要 .ibd + .cfg 文件才能完整恢复
|
|||
|
|
2. **Docker MySQL 数据目录**: 挂载现有数据目录需要权限和版本匹配
|
|||
|
|
3. **1Panel MySQL**: 通过 Docker 容器运行,需要用 docker exec 执行命令
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🖥️ 服务器信息
|
|||
|
|
|
|||
|
|
- **新服务器 IP**: 175.178.72.171
|
|||
|
|
- **项目路径**: `/opt/1panel/apps/zjpb`
|
|||
|
|
- **MySQL 容器**: `1Panel-mysql-2Z4D`
|
|||
|
|
- **服务管理**: `systemctl restart zjpb`
|
|||
|
|
- **Gitea**: `http://175.178.72.171:3000/jowelin/zjpb.net.git`
|
|||
|
|
- **访问令牌**: `d507007d9bd411a6468a424441cf534e32e71020`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 重要提醒
|
|||
|
|
|
|||
|
|
1. **环境变量修改**: 修改 .env 后必须执行 `systemctl restart zjpb`
|
|||
|
|
2. **管理员密码**: 默认 admin/admin123,生产环境务必修改
|
|||
|
|
3. **数据备份**: 定期备份数据库,使用 mysqldump 导出 SQL 格式
|
|||
|
|
4. **SSL 证书**: 定期检查证书有效期,及时续期
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**开发人员**: Claude Sonnet 4.6
|
|||
|
|
**项目负责人**: lisacc
|
|||
|
|
**工作日期**: 2026-03-12
|