5.7 KiB
HN 生产部署与恢复
2026-10-27 用户授权部署到 sitejp02,并指定主域名 hardnerd.net。本页仅维护 HN;DPL 发布仍单独授权。
当前实例
- 主站:https://hardnerd.net/;www.hardnerd.net 301 到主站。
- 后台:https://admin.hardnerd.net/,根路径内部映射 HN 数据库内随机 secure_path;API 仍要求管理员认证。
- 服务器:site-jp02 / VPS-005,路径
/www/wwwroot/hardnerd.net,经白色机 SSH;连接资料按 GemDocs 凭据入口取用,不写入仓库。 - Git 发布分支:
codex/hn-production;首发功能提交2e5cec6a05e4ba6bb4bad9ec814f8d099bcd2bfe,合并当时本地 master;不是 DPL 的上线版本。后续邮件/订阅配置和安装器版本以本文及 HN_MAIL_GATEWAY 为准;只更新HN专用分支。 - EZ 锁定源码
2c0581386d86006315e6eba2f5970c923892caba;后台子模块ef5f43da335092cbff8fdf0ad7ff9b4d92d7d0d7;两者均正常 Git 初始化,未修改第三方构建源。 SITE_PROFILE=hn、SITE_THEME=EZ、生产环境、debug 关闭、HTTPS 安全会话;独立 APP_KEY、数据库、SQL 用户、Redis 密码/前缀、storage、日志、会话与队列。未复制本地演示库或 DPL 业务数据。- MariaDB 数据库/账号 hn(仅 hn.* 授权),Redis
127.0.0.1:6387;Unix 用户 hn。服务hn-redis、hn-fpm、hn-horizon,独立 FPM socket/run/php/hn.sock、独立主配置/etc/php/8.4/hn-fpm.conf(不向 DPL 共用 FPM 池加载)。 - 新配置:
/etc/nginx/conf.d/hn.conf、/etc/hn/redis.conf、/etc/cron.d/hn-scheduler,服务单元在/etc/systemd/system/。HN FPM ondemand 最多2子进程,Horizon每组1进程,两个服务各 MemoryMax 640M,Redis上限128MB。 - 生产默认管理员按 ACC-005 约定创建为 ID1,管理员有效且未禁用;未覆盖已有账号。凭据只由 GemDocs 对应字段入口提供,不写本文或日志。
DNS 与 TLS
Namecheap 中 hardnerd.net 已切到 bradley.ns.cloudflare.com / jewel.ns.cloudflare.com;Cloudflare 独立 zone 76ae2997fe3ed41820aee0f7a73f4271,免费方案已激活。根域与 admin A 指向 sitejp02,www CNAME 根域,均已代理;原5条 Namecheap 邮件 MX 与 SPF 已保留,不代表邮件收发可用。
源站 Let's Encrypt 证书含根域、www、admin,有效期至 2027-01-25;Certbot webroot /var/lib/hn/acme,HTTP 仅开放 ACME 并将其他请求跳到 HTTPS。证书目录 /etc/letsencrypt/live/hardnerd.net,已安装仅处理本证书的 hn-cert-renew.timer / hn-cert-renew.service,每日03:30加最多1小时随机延迟检查,Persistent补跑;续期后专用 deploy hook 检查并平滑 reload Nginx。续期 certbot renew --cert-name hardnerd.net --dry-run 已通过(退出0),timer下一次触发时间已回读。Cloudflare 完整(严格)已保存并回读;先通过源站证书验证,再启用严格校验,没有降低 TLS 校验。
未建立新的白色机网站反代;本机不访问线上。服务器侧运维请求走已登记 SSH 路线。hardnerd.dev 已配置独立企业邮箱与Resend;hardnerd-nodes.com 已配置独立订阅网关,运行、DNS、验收与恢复见 HN_MAIL_GATEWAY。
发布、权限与恢复
按 Git 提交、推送,再在 HN 路径更新明确提交;保留 DPL 原 checkout 和分支。依赖安装与 EZ 构建在 HN 目录内完成,运行私密配置不进 Git。备份用 umask077,Git checkout 用022;仅 HN storage/bootstrap缓存允许 hn 写,源代码和发布资源由 root 管理。
首发备份:/root/codex-backups/hn/20261027-first-deploy/,包括 DPL/原Nginx/原服务保护基线、HN 初始环境600、建管理员前 HN SQL600、HTTP-only Nginx备份、安装/构建/Certbot日志及服务器验收JSON。目录受 root 保护;恢复前核实当前数据,不盲跑首发脚本。
紧急停止 HN:只停 hn-horizon、hn-fpm、hn-redis、hn-cert-renew.timer,保留数据库/配置/备份;如需撤销入口,将 hn.conf 恢复为该备份中的 HTTP-only 配置,nginx -t 后平滑 reload。不要重启/停止 DPL FPM、DPL Horizon、共享 MariaDB 或原 Redis。DNS 可按登记回滚 Namecheap BasicDNS,旧停放配置留作历史而不作业务恢复。
首发初始化曾因 Git 不跟踪 storage/app 空目录而中断;从守卫续跑点补齐目录后继续迁移,保留已生成密钥和独立数据库,没有重新初始化。HTTPS reload 后首次瞬时探测失败,复查及后续所有源站/公网 TLS 均通过;未因此放宽证书校验。
验收与业务范围
- 站点配置回归14测试/31断言、EZ配置测试1项、旧草稿测试7项及正式构建通过;合并后再验证,服务器依赖安装/构建和数据库迁移成功。
- 经白色机在服务器侧验证:主站/后台 HTTPS200,www301,响应经 Cloudflare;公开配置 app_name=hardnerd,EZ主模块200,源站三个域名证书校验通过,.env访问403/404(www跳转后拒绝)。
- 后台HTML及8项资源200,真实默认管理员登录200、管理配置接口200、访客403;仅本次新建验收令牌已撤销。
- DPL HEAD
7e8fbf60bd62ed5c6093099d574e0f234994a088未变;全部原 Nginx 配置SHA256未变;DPL Horizon、共享FPM、Nginx主进程、MariaDB、原Redis均active且启动时间未变,DPL公网HTTP200。Nginx仅平滑加载新增HN虚拟主机。 - 已完成服务器侧验收,未做线上页面验收。HN现为独立新站,没有套餐/订单/节点;邮件及辅助域名随后已配置并完成服务器侧收发/投递回调/订阅鉴权验收,详见 HN_MAIL_GATEWAY。唯一受限订阅测试用户ID2已禁用、轮换令牌且无会话;支付及实际节点联网未配置/验收。