作者: wrok-buddy-21

  • 瓜奇 2.9.x 部署踩坑实录:官方文档没写清楚的 7 个坑

    瓜奇(GuaQi)是 7B2 作者的新作,跟传统 WP 主题最大的不同是:它把前端和后端拆开了——后端还是 WordPress,前端跑在 Node.js 上,两边通过 GraphQL 通信。

    好处是快、能多端、能一个后台跑多个站。代价是——部署链路一下子长了好几倍。

    官方安装说明(guaqi.com/article/65236)能让你跑通,但有几个坑它没写。下面是我最近一次真实部署踩到的,按踩到的顺序记下来。

    先说我用的环境

    项 配置
    系统 Ubuntu 24.04
    面板 宝塔(aaPanel)
    后端 WordPress + PHP 8.2 + MySQL 8.0 + Redis
    前端 Node.js 20+(Nuxt 构建产物)

    坑 1:域名要两个,而且后端域名”一锤定音”

    瓜奇不是一个域名搞定的站:

    • 客户端域名——用户访问的,可以绑多个;
    • 后端域名——WP 管理后台,只能一个,而且在构建器里登记之后无法修改。

    我第一次只准备了一个域名,跑到一半才发现要单独登记后端域名,而且填错了就改不了,只能重建站点重新登记。这一步一定要在动手前想清楚。

    坑 2:Swoole Loader 绑死 PHP 版本

    瓜奇后端插件是加密发布的,需要 Swoole Loader 才能解密运行。

    关键点:扩展版本必须和你下载插件时的 PHP 版本精确匹配。你下载的是 php82 的包,服务器就必须是 PHP 8.2 —— 装成 8.1 或 8.3,插件都不会正常工作。

    坑 3:装了扩展 ≠ 生效,必须重启 php-fpm ⭐

    这是我卡最久的一个,也是最容易让人怀疑人生的一个。

    在宝塔里给 PHP 8.2 装好 swoole_loader82 之后,会出现一个诡异现象:

    • 命令行执行 php -m,能看到扩展已加载;
    • 但打开网站时,GraphQL 里根本没有 guaqi 字段,前端一直报接口错误。

    原因很简单也很坑:宝塔的 php-fpm 在新增扩展后不会自动重启,于是出现”CLI 已加载、FPM 没加载”的分裂状态。

    解决办法:重启 php-fpm-82 服务。 重启之后,GraphQL 的 guaqi 字段才注册成功,页面才通。

    一句话记住:改完 PHP 扩展,一定要重启 php-fpm,不能只看 CLI。

    坑 4:插件的数据库迁移要手动触发一次

    启用瓜奇插件之后,并不是所有表都会自动建好。

    需要在 WP 环境里手动执行一次初始化函数,完成数据库迁移:

    guaqi_plugin_activate();
    
    

    执行完之后,相关数据表才齐全。

    坑 5:Node 前端的端口改了,要”重新下载”文件

    前端是一份构建好的 Nuxt 产物,端口信息在构建结果里。

    每次修改端口,都要回到瓜奇构建器重新下载一份 Node 端文件来替换 —— 它不是”改个配置文件就行”的普通 Node 项目。

    坑 6:前端也要单独配 SSL,且建议强制 HTTPS

    前后端两个域名都要装证书。

    很多人只给后端配了 SSL,忘了 Node 站那个域名 —— 结果用户访问时出现混合内容(mixed content)警告,甚至部分接口直接被浏览器拦掉。

    坑 7:WPGraphQL 是前置依赖,顺序不能乱

    安装顺序是固定的:

    1. 先装并启用 WPGraphQL;
    2. 再装瓜奇插件。

    顺序反了,GraphQL 接口注册会失败,而且报错信息不会直接告诉你”是顺序问题”。

    小结:正确的部署顺序

    1. 解析 2 个域名(客户端 + 后端)→ 后端域名建 WP 站
    2. 后端配好 PHP 8.2 + Redis + swoole_loader82 → 重启 php-fpm → 设置伪静态 + SSL
    3. 装 WPGraphQL → 装瓜奇插件 → 手动执行 guaqi_plugin_activate()
    4. 构建器里搭好布局 → 下载前端产物 → 部署 Node 站 → 配端口 + SSL
    5. 前后端域名互通测试,完成

    瓜奇的部署难点不在某一步特别难,而在于步骤多、依赖链长、且出错时不告诉你错在哪。希望这篇能让下一个部署的人,把三天缩成三十分钟。

  • WHMCS 安全加固清单:12 个必查项

    WHMCS 不只是一个”计费系统”。它装着客户的身份证、支付记录、工单往来,以及你所有服务器的开通凭据。

    一旦它被打穿,攻击者拿到的不是”一个网站”,而是整个客户关系的控制权。

    WHMCS 官方其实有一份加固清单(docs.whmcs.com/Further_Security_Steps),但它是按”功能文档”组织的,不好逐条核对。我把它整理成 12 项可执行的动作,你可以直接照着查。


    1. 升级到最新的 LTS 版本

    这是性价比最高的一条。

    WHMCS 只在当前 LTS 版本上发布安全补丁。如果你 12 个月以上没升级,那你的站点里几乎一定有已被公开的、可被直接利用的漏洞。

    升级前:备份文件 + 数据库、确认模块兼容、确认 PHP 版本支持、在测试环境先跑一遍。

    2. 加固 configuration.php

    这个文件里有你的加密密钥、数据库账号、授权信息。它一旦泄露,攻击者可以解密数据库里所有已保存的支付凭据和密码。

    三层防护,按顺序做:

    chmod 400 configuration.php      # 只允许属主读取
    # 或者:把它移出网站根目录,用中转文件引用
    chattr +i configuration.php      # 加不可变标志,连 root 都改不了(解除用 chattr -i)
    
    

    3. 重命名 admin 目录

    WHMCS 默认后台路径就是 /admin,全网扫描器都在扫这个路径。

    // 改完目录名后,在 configuration.php 里同步:
    $customadminpath = '你的新目录名';
    
    

    这属于”隐藏”而非”防护”,但能把绝大多数自动化爆破直接挡在门外。

    4. 给 admin 目录加 IP 白名单

    如果团队有固定办公 IP 或固定出口的 VPN,直接在 Web 服务器层限制:

    location /你的后台目录 {
        allow 203.0.113.5;
        allow 198.51.100.0/24;
        deny all;
    }
    
    

    这样即便有人找到了你的后台路径,也得先拿下你的办公 IP。

    5. 全站强制 HTTPS + HSTS

    Strict-Transport-Security: max-age=31536000; includeSubDomains
    
    

    HTTPS 在 2026 年不是可选项。配置里要保证所有 HTTP 请求 301 到 HTTPS,并且证书到期前自动续期(Let’s Encrypt 可以自动化)。HSTS 要在 HTTPS 完全稳定之后再开。

    6. 把可写目录移出网站根目录

    attachments/、templates_c/、downloads/ 这类可写目录是上传漏洞的重灾区。

    把它们移到 Web 根目录之外的非公开位置,再同步修改文件存储设置和模板缓存路径。WHMCS 官方有专门的文档说明这一步。

    7. 把 crons 目录移出网站根目录

    crons/ 目录同样不应该能被直接 web 访问。移到 web root 之上的私有目录即可。

    8. 数据库权限最小化

    只给 WHMCS 日常运行必需的那几个权限。安装、升级、模块激活时才需要临时提权。

    不要图省事给数据库账号 ALL PRIVILEGES——那等于把数据库的钥匙和保险箱一起放在门口。

    9. 禁止直接访问 vendor 目录

    vendor/ 里是一堆第三方库,不应该被直接当静态文件请求。

    • 用 Apache:自带的 .htaccess 已处理;
    • 用 Nginx:必须手动加规则禁止访问该目录。

    用 Nginx 又没配这条,是个很常见的疏漏。

    10. 防点击劫持(CSP)

    确保站点始终发送正确的 CSP frame-ancestors
    响应头,避免你的客户区被外部页面 iframe 套住做钓鱼。

    Content-Security-Policy: frame-ancestors 'self'
    
    

    11. 员工账户:2FA + 独立账号 + 最小权限

    后台是整个系统的钥匙串,这里必须严:

    • 所有管理员强制开启两步验证(2FA);
    • 一人一号,绝不共用账号(否则出了问题无法追责);
    • 按角色分配权限,客服不需要有”服务器管理”权限。

    12. 防垃圾注册与社工攻击

    攻击者先从”注册一个账号”开始。几条立刻能生效的措施:

    • 禁止用你公司自己域名的邮箱注册客户账号(防冒充内部人员的社工);
    • 开启邮箱验证,确认客户邮箱真实可达;
    • 开启 reCAPTCHA v3 或 hCaptcha,挡住批量机器人下单;
    • 配置风险评分与订单人工复核,可疑订单先审后开。

    附:一张自检表

    # 项目 状态
    1 WHMCS 为最新 LTS ☐
    2 configuration.php 已加固(400 / 移出 / 不可变) ☐
    3 admin 目录已改名 ☐
    4 admin 目录有 IP 白名单 ☐
    5 全站 HTTPS + HSTS ☐
    6 可写目录已移出 web root ☐
    7 crons 目录已移出 web root ☐
    8 数据库权限已最小化 ☐
    9 vendor 目录禁止直接访问 ☐
    10 已发送 CSP frame-ancestors ☐
    11 员工 2FA / 独立账号 / 最小权限 ☐
    12 邮箱验证 + 验证码 + 欺诈防护 ☐

    12 项全绿,才算”基本安全”。 任何一项是红的,都是一个已经敞开的口子。