- 使用 JOIN 查询替代子查询获取推荐网站 - 异步更新浏览量,避免阻塞页面加载 - 添加数据库索引脚本 (site_tags, sites 表) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5.2 KiB
5.2 KiB
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
部署步骤:
- ✅ 克隆项目代码
- ✅ 创建数据库
zjpb - ✅ 配置 .env 文件
- ✅ 创建 Python 虚拟环境
- ✅ 安装依赖 (requirements.txt)
- ✅ 初始化数据库 (init_db.py)
- ✅ 配置 Systemd 服务
- ✅ 配置反向代理
- ✅ 配置 SSL 证书
3️⃣ Systemd 服务配置
服务文件: /etc/systemd/system/zjpb.service
[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
常用命令:
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️⃣ 数据恢复尝试(未成功)
尝试方案:
- ❌ 直接导入 .ibd 文件 - 缺少 .cfg 配置文件
- ❌ 本地 Docker 挂载恢复 - 表结构不匹配
- ❌ 服务器端 .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
- 配置定时备份任务
- 优化部署流程文档
💡 经验总结
成功经验
- Systemd 服务管理: 比 nohup 更可靠,支持自动重启和日志管理
- 1Panel 部署: 简化了 MySQL、Nginx 等服务的管理
- Git 令牌认证: 将令牌嵌入 remote URL,避免每次输入密码
遇到的问题
- gunicorn 启动命令错误:
app:create_app()括号导致 bash 语法错误 - daemon 模式冲突: gunicorn daemon=True 与 systemd Type=simple 冲突
- .ibd 文件恢复失败: 缺少 .cfg 文件,无法跨版本/实例恢复
学到的知识
- InnoDB 表空间导入: 需要 .ibd + .cfg 文件才能完整恢复
- Docker MySQL 数据目录: 挂载现有数据目录需要权限和版本匹配
- 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
📝 重要提醒
- 环境变量修改: 修改 .env 后必须执行
systemctl restart zjpb - 管理员密码: 默认 admin/admin123,生产环境务必修改
- 数据备份: 定期备份数据库,使用 mysqldump 导出 SQL 格式
- SSL 证书: 定期检查证书有效期,及时续期
开发人员: Claude Sonnet 4.6 项目负责人: lisacc 工作日期: 2026-03-12