Back to skills
extension
Category: Development & EngineeringNo API key required

FastAdmin thinkphp 自动部署和备份

FastAdmin thinkphp 自动部署和备份

personAuthor: yanggg1133hubModelScope

FastAdmin 安全部署与备份技能

为 FastAdmin、ThinkPHP 等 PHP 项目在 Linux 服务器(尤其是宝塔面板环境)上的部署提供安全、可重复的工作流。通过强制3次代码审查、增量打包、服务器自动备份和失败回滚机制,最大程度降低部署风险。

触发场景

  • 部署 PHP 代码更新到 Linux 服务器(尤其宝塔面板环境)
  • 需要保留目录结构的增量打包
  • 需要在覆盖生产文件前进行服务器端备份
  • 部署失败后需要快速回滚

工作流程

步骤 1: 打包前强制3次代码审查

打包任何文件前,必须从不同角度对所有修改文件进行3次审查。任何一次发现关键问题,停止修复后从头重新进行3次审查。

| 审查轮次 | 视角 | 核心关注点 | | :--- | :--- | :--- | | 第1次 | 正确性 | 变量名、函数调用、参数顺序、返回值、条件分支、边界情况 | | 第2次 | 安全性 | SQL注入、XSS、未授权访问、硬编码凭据、敏感数据泄露、权限检查 | | 第3次 | 生产就绪 | 调试代码(dd/var_dump等)、测试路由、硬编码IP/配置、语法错误 |

FastAdmin/ThinkPHP 审查清单:

第1次 — 正确性:

  • 修改逻辑是否符合需求意图
  • 数据库字段名与实际Schema匹配
  • 模型关联和查询构建器正确
  • 表单验证规则覆盖所有输入
  • 无未定义变量或缺失use导入
  • 返回值和异常处理恰当

第2次 — 安全性:

  • 无原生SQL拼接(使用参数绑定)
  • 用户输入已验证和过滤
  • 认证和授权检查到位(Auth节点)
  • 无敏感信息泄露到日志或响应
  • 文件上传类型/大小/路径限制
  • 表单CSRF Token保护已启用

第3次 — 生产就绪:

  • 无残留调试语句: dd(), dump(), var_dump(), print_r(), echo
  • 无残留测试路由或临时端点
  • 无硬编码localhost或内网IP
  • 配置值引用环境变量而非硬编码
  • 无意外包含.git或IDE配置文件
  • 无意外包含vendor/或runtime/目录
  • 所有文件通过php -l语法检查

步骤 2: 增量打包

仅打包修改过的文件,使用 tar 保留目录结构:

tar -czf deploy-$(date +%Y%m%d_%H%M%S).tar.gz -C /path/to/project file1.php file2.php

步骤 3: 服务器端自动备份与部署

使用捆绑脚本执行完整流程:

scripts/deploy.sh

部署脚本依次执行: 服务器端备份 → 上传解压 → 清理缓存 → 验证结果。

步骤 4: 失败回滚

部署失败时使用回滚脚本:

scripts/rollback.sh

回滚从备份目录 /backup/YYYYMMDD_HHMMSS/ 恢复。

捆绑资源

脚本(scripts/)

  • deploy.sh — 完整部署脚本(备份+解压+清理缓存)
  • backup.sh — 仅备份脚本(适用于手动解压)
  • rollback.sh — 回滚脚本(从备份目录恢复)

参考资料(references/)

  • deploy_guide.md — 详细使用指南与示例

核心原则

  1. 审查后再打包: 强制3次代码审查,关键问题阻塞整个工作流
  2. 增量打包: 仅打包修改文件,绝不打包整个项目
  3. 保留结构: tar维护目录路径,解压时文件自动放置到正确位置
  4. 覆盖前备份: 服务器在替换现有文件前始终备份
  5. 标准化备份路径: /backup/YYYYMMDD_HHMMSS/,保留子目录结构
  6. 禁止全项目归档: 避免打包vendor/、runtime/、.git/等非代码目录