dpl/docs/maintenance/DEPLOYMENT.md
hellcat 6af676421b
Some checks are pending
Docker Build and Publish / build (push) Waiting to run
Add append-only batch node onboarding and recovery checks
2026-10-17 08:29:05 +08:00

4.9 KiB
Raw Blame History

发布与恢复

目标与连接

本项目生产站点为 https://dp-link.net,后台 /dove;后端目录 /www/wwwroot/dp-link.net,服务器逻辑名 site-jp02。通过既定白色跳板连接;项目与连接入口参见 dpl 档案 和 私有资源索引,不把它们的内容提交到公开仓库。

本地 http://dpl.loc/dove 已配置到当前 Laravel public/。本机 Nginx 配置 /usr/local/etc/nginx/servers/dpl.loc.conf,PHP-FPM 使用现有 9000 端口。系统级服务重载可能需要 Mac 管理员授权;不持久保存系统密码。

本地开发与联调访问规则:本地站点仍使用 http://dpl.loc;本地访问线上项目域名必须查询 CoDocs 反代表 并走明确登记的白色机反代,dpl 主站入口为 https://dpl.tomshell.com.de。缺映射/用途不符时询问用户,不直接或变相访问源站。该访问约定不自动修改生产支付回调域名或生产配置。

Git 发布顺序

  1. 复核最新用户要求、目标服务器、仓库和改动范围;读取本地与线上 git status、当前 HEAD、远端。线上既有无关修改必须保留,不能直接 reset --hard、clean 或无范围 stash。
  2. 做相关测试和 diff 审查。高影响变更应接受独立审查;不要把未执行的审查记成已通过。确认无凭据、备份、私密配置和其他任务内容混入。
  3. 提交所需代码并推送项目 origin;记录明确提交版本。单独前台仓库或其他项目独立处理。
  4. 生产先记录当前提交,备份受影响文件/配置;数据库迁移前备份数据库并设计数据恢复方案。验证备份存在与权限,不能只写“有备份”。
  5. 按现场状态暂停必要任务,避免本地/线上重复处理同一个邮箱。服务器 git fetch 后更新到明确目标提交,优先 fast-forward,保留无关修改。
  6. 如涉及后台资源,初始化仓库指定子模块:git submodule update --init --checkout public/assets/admin。不要擅自升级至上游最新版本。此前缺失子模块曾造成后台 HTML 200 但脚本 404、整页空白。
  7. 依赖或数据库变化才执行对应 composer/迁移步骤;不得顺带升级 PHP 或全部系统包。处理 Laravel 配置/视图缓存,重载受影响常驻进程,恢复原调度。
  8. 核对线上 HEAD、相关文件、资源 HTTP 状态、页面显示、实际登录/保存、队列及必要的业务闭环。明确尚未到时或未验证的定时任务。

默认发布禁止打包覆盖,除非用户明确指定。服务器直接读取已有仓库优先;不能为了拉取 Git 自动复制本机用户名密码到服务器。凭据传输若被审批拒绝,报告真实原因,使用不涉及该凭据的既有合法读取方式。

当前运行依赖

生产使用 php8.4-fpm.service、dpl-horizon.service、Redis 与既有 /etc/cron.d/dpl-scheduler。Horizon 处理 send_email 队列;cron 执行 Laravel schedule:run。mail:poll-inbox 每分钟,mail:reconcile 每五分钟,邮件日报 08:00 加五分钟补偿扫描。时间和锁的实际实现以 Console\Kernel 和服务代码为准。

IMAP 扩展需同时在 CLI 与处理后台请求的 FPM 中可用;安装后不能只验证 CLI,常驻进程可能仍加载旧环境。

恢复与排错

  • 代码:核对受影响范围和线上未提交修改,再更新到记录的旧提交并恢复缓存/进程。不要为了回滚本任务破坏其他修改。
  • 数据:代码回滚不等于数据库回滚。新增业务表与已发送记录通常应保留;删表或恢复整库会损失上线后的数据,需单独决策。
  • 账号与配置:使用受保护备份恢复指定字段,保持 APP_KEY。不得跨环境盲目复制加密密钥。
  • 后台空白:先查引用的 JS/CSS 和 manifest/子模块,再查浏览器报错;必须实际渲染和登录验收。
  • 配置保存失败:检查请求校验、旧配置合并、密钥留空保留、FPM 扩展加载与 Redis 缓存。
  • 邮件异常:先查看记录状态、幂等键、配额、收件游标和队列;不能通过重复发真实邮件来试错。

最近备份目录记录为 /root/codex-backups/dpl/,具体任务子目录与版本文件需现场核验;生产受保护备份不纳入 Git。历史 codex/output 中脚本仅作审计,不能不检查幂等和适用版本就重跑。

Git 更新时的文件权限

私密备份使用 umask 077;执行 Git checkout/merge 更新运行代码前切回 umask 022,或仅为该 Git 命令设置 022。代码需可供 PHP-FPM/队列用户读取,新目录需可遍历。不要递归修改 .env、私密备份或 storage/app/private 的权限。2026-10-11 Telegram 发布曾因沿用备份 umask 而出现代码读取失败,已在受影响文件范围内修复并重载验证。