HumHub 1.19.3 常用 CLI 命令与工具详解
HumHub 1.19.3 yii 控制台全景:25 组命令族实测回显(cron/cache/migrate/queue/settings/module/installer/search/integrity/file),help 路由写法、optimize 驱动不支持等 5 条 CLI 踩坑,附 6 个随服务发行的运维脚本源码级说明。
HumHub 1.19.3 常用 CLI 命令与工具详解
本文把 HumHub 1.19.3 的运维控制台(
yii命令族)与随服务发行的辅助脚本讲全,全部命令在 2026-11-02 对真实运行实例实测,回显逐行照抄(含报错原文)。实例由 《HumHub 1.19.3 Docker Compose 部署指南》 部署,参数语义见 《HumHub 1.19.3 配置参数详解》。
一、CLI 入口与执行方式
1.1 官方入口形态
官方 CLI 文档(humhub/docker 仓库 docs/cli.md,2026-11-02 查阅)给出的标准执行方式——在主机上 compose 文件所在目录运行,把命令送进应用服务进程组:
docker compose exec humhub /app/yii <command>
不带参数列出全部可用命令:
docker compose exec humhub /app/yii
/app/yii 外层包装脚本有身份检查(源码实测):以 root 执行会自动切换到 www-data 身份运行真正的 /app/bin/yii;其他身份直接拒绝并回显:
This wrapper must be run as root or www-data
1.2 命令总览(实测全表)
/app/yii 裸跑回显 "This is Yii version 2.0.55.",随后按控制器分组列出命令族(2026-11-02 实测,共 25 组):
| 组 | 子命令 |
|---|---|
cache | flush / flush-all / flush-schema / index |
content-search | find / optimize / queue-rebuild / rebuild |
cron | daily / hourly / run |
file | delete-variants / downscale-images / index |
installer | auto / create-admin-account / install-db / set-base-url / write-db-config / write-site-config |
integrity | run |
ldap | list / list-users / mapping-clear / mapping-rebuild / show-user / status / sync |
migrate | create / down / fresh / history / mark / new / redo / to / up |
module | disable / enable / info / install / list / list-online / register / remove / update / update-all |
professional-edition | info / register / unregister / update |
queue | clear / exec / info / listen / remove / run |
settings | delete / list / list-module / set |
space | assign-all-members |
test | db-connection / email |
theme | info |
asset / fixture / message | Yii2 框架自带(压缩、夹具、翻译抽取) |
二、cron 族:定时任务
HumHub 的定时体系不依赖系统 crontab——服务进程组里的调度器按周期自动跑(内置机制)。CLI 的 cron 族用于手动强制执行,典型场景是装完模块后立刻触发清理/摘要:
docker compose exec humhub /app/yii cron/run
实测静默无输出(正常执行,退出码 0)。分级别强制触发有回显:
docker compose exec humhub /app/yii cron/daily
Executing daily tasks:
Deleting old notifications... done.
Deleting old unassigned files... done.
docker compose exec humhub /app/yii cron/hourly
Executing hourly tasks:
(本实例小时级暂无注册任务,输出仅标题行。)每日任务的基准时刻由 params.dailyCronExecutionTime(默认 18:00)控制,见配置篇 1.2 节实测。
三、cache 族:缓存清理
docker compose exec humhub /app/yii cache/flush-all
实测回显:
The following cache components were processed:
* cache (yii\caching\FileCache)
* runtimeCache (yii\caching\DummyCache)
注意第二项:控制台上下文里 runtimeCache 降级为 DummyCache(Web 上下文是 ArrayCache),属预期行为。改配置/改表结构后的三板斧:cache/flush-all(全量)、cache/flush <组件名>(指定)、cache/flush-schema db(仅清表结构缓存)。服务启动脚本在安装完成后会自动执行 flush-all + 迁移(官方入口脚本逻辑,见部署篇第六章)。
四、migrate 族:数据库迁移
docker compose exec humhub /app/yii migrate/up --includeModuleMigrations=1
Yii Migration Tool (based on Yii v2.0.55)
No new migrations found. Your system is up-to-date.
--includeModuleMigrations=1是关键开关:核心迁移默认包含,模块迁移必须显式带上;官方启动序列是先跑核心(=0)再module/update-all后跑全量(=1)。migrate/new只列出未应用迁移、不写入——服务的就绪等待脚本正是用 "No new migrations found" 字符串判断放行调度器/队列(源码实测)。migrate/history查已应用版本;migrate/to/migrate/fresh属危险操作(fresh 会删全表重放),仅测试环境使用。
五、queue 族:任务队列
队列驱动默认 MySQL 表(配置篇 3.1),无需外部 MQ:
docker compose exec humhub /app/yii queue/info
Jobs
- waiting: 0
- delayed: 0
- reserved: 0
- done: 0
queue/run:手动消费一轮积压任务(实测无积压时静默返回)。queue/listen:常驻监听——服务进程组里的 2 个 worker 就是它(HUMHUB_DOCKER__NUMPROCS_WORKER=2),实测日志可见任务逐条 Started/Done 带耗时与内存:
[humhub-worker_01] 2026-11-02 06:18:37 [7] humhub\modules\live\jobs\DatabaseCleanup (attempt: 1, pid: 233) - Started
[humhub-worker_01] 2026-11-02 06:18:37 [7] humhub\modules\live\jobs\DatabaseCleanup (attempt: 1, pid: 233) - Done (0.015 s, 13.95 MiB)
queue/clear清空队列、queue/remove <id>删单任务:用于处理反复失败的毒任务。
六、settings 族:数据库运行设置
后台设置页的 CLI 等价物(读写 setting 表,语义见配置篇第五节):
docker compose exec humhub /app/yii settings/set base displayNameSubFormFormat "test {firstname} {lastname}"
*** Successfully set setting
docker compose exec humhub /app/yii settings/delete base displayNameSubFormFormat
*** Successfully deleted setting
settings/list 全量、settings/list-module <模块ID> 按模块过滤(实测 base 模块含 oembed 端点表、空间默认权限等大量行,输出为窄列 ASCII 表格、长值换行,脚本消费建议配合 grep)。改完设置若未生效,补一发 cache/flush-all(配置篇排障第 1 条)。
七、module 族:模块管理
docker compose exec humhub /app/yii module/list
实测回显(节选):
Installed Modules (22)
────────────────────────────────────────────
ID STATUS VERSION NAME
──────────────────────────────────────────────────────────────────────
web disabled 1.0 Web
notification disabled 1.0 Notifications
...
user disabled 1.0 User
0 of 22 module(s) enabled.
注意实测语义:核心模块在该列表里一律显示 disabled、且不计入 enabled 统计("0 of 22")——核心模块随系统常驻,不受 enable 开关管辖;该列表真正关心的是市场/自装模块。其余子命令:
module/info <id>:查单模块状态,实测space回显Installed: Yes / Enabled: No / Version: 1.0 / Path: /opt/humhub/protected/humhub/modules/space。module/list-online:列市场在线模块(需params.humhub.apiEnabled=true出网)。module/install <id>/enable/disable/remove:市场模块生命周期;updater模块被发行包默认黑名单屏蔽(配置篇 2.1 表),升级走换版本 tag。module/update-all:批量更新到兼容最新版,官方升级序列的一环。module/register <license-key>:付费模块/专业版授权注册。
八、installer 族:免交互安装
安装向导的命令行等价物(部署篇第五章的 Web 流程可整体脚本化):
| 命令 | 作用(官方源码描述) |
|---|---|
installer/write-db-config | 试连给定数据库并写配置 |
installer/install-db | 清缓存、跑迁移、置 installed 标记 |
installer/set-base-url | 写站点 baseUrl |
installer/write-site-config | 写站点关键设置并置 installed |
installer/create-admin-account | 建用户并加入管理员组 |
installer/auto | 全免交互完成安装(官方标注 Useful for testing) |
CI/批量开站场景:compose 里给齐 HUMHUB_CONFIG__COMPONENTS__DB__* 环境变量后,入口脚本自动开启免检模式(ENABLE_AUTO_SETUP=true,实测安装器据此跳过预检与数据库两步),再用 installer/create-admin-account 补管理员即可无人值守。
九、content-search 与 integrity:搜索索引与数据体检
docker compose exec humhub /app/yii content-search/rebuild
..OK!
重建全文索引(content_fulltext 表)。content-search/find <关键词> 查索引、queue-rebuild 走队列异步重建。optimize 实测直接报错(见本章排障实录第 2 条)。
docker compose exec humhub /app/yii integrity/run
Validating: User Module - Content container (4 entries)
*** All integrity checks done
数据一致性巡检(后台"维护"页的 CLI 版),排障时先跑它确认没有孤儿数据。
十、file / theme / test:辅助工具
file/index:上传文件盘点,实测回显:
*** File module console
╔════════════════════════════════╤═════╗
║ Total number of uploaded files │ 0 ║
╟────────────────────────────────┼─────╢
║ Size │ 0 B ║
╚════════════════════════════════╧═════╝
Automatically generated file variants:
╔═════════╤══════╗
║ Variant │ Size ║
╚═════════╧══════╝
file/downscale-images:把存量图片按最大尺寸/质量重缩(改了图片配置后批量应用);file/delete-variants:删除全部派生变体(预览图),首屏变慢但省磁盘。theme/info:主题盘点,实测回显当前激活主题HumHub,路径/opt/humhub/protected/humhub/themes/HumHub——印证 1.19 起默认主题不再放数据目录(官方入口脚本注释)。test/db-connection:连通性自检;test/email <地址>:按当前邮件设置发测试信,实测回显Message successfully sent!,file传输模式下落盘可查:
/app/runtime/mail/20261102-142350-0722-0172.eml
ldap族(status/sync/mapping-rebuild 等 7 个子命令):LDAP 模块启用后可用,域同步排障主力;space/assign-all-members:空间批量成员操作。
十一、随服务发行的运维脚本
/app/bin/ 目录实测清单(除 yii 外均为 bash 脚本):
| 脚本 | 用途(源码实测) |
|---|---|
humhub-backup.sh | 备份:预检(PID1/挂载点/磁盘水位/DB 连通)→ mariadb-dump + 存储打包 tar;由 manual profile 一次性调用(部署篇第七章实测) |
humhub-scheduler.sh | 调度进程入口(先 wait-ready 再循环跑 cron) |
humhub-worker.sh | 队列进程入口(即 queue/listen 常驻形态) |
humhub-startup.sh | 启动序列:flush-all → 核心迁移 → update-all → 模块迁移 |
humhub-wait-ready.sh | 只读等待:安装完成 + migrate/new 无待办才放行 |
humhub-simple-healthcheck.sh | 健康探测:curl 按 SERVER_NAME 推导 URL,<400 即 0(配置篇第七节) |
主机侧对这三类进程组(Web/调度/队列)的开关即 HUMHUB_DOCKER__AUTOSTART_* 三变量(配置篇 2.1 表),拆分部署时把 Web 进程的三项设 true,false,false、调度/队列各自单开角色。
十二、CLI 排障实录
help的路由写法坑。yii help/cron/run实测报错:
Unknown command: help/cron/run
Caused by: Exception 'yii\base\InvalidRouteException' with message 'Unable to resolve the request: help/cron/run'
正确写法是空格分隔:yii help cron/run,实测正常输出该命令的 DESCRIPTION/USAGE/OPTIONS(--appconfig、--color 等通用选项)。同理 help migrate/up 报错、help migrate up 可行。
content-search/optimize在默认驱动下不可用。实测报错原文:
Optimizing search index: Exception 'yii\base\UnknownMethodException' with message 'Calling unknown method: humhub\modules\content\search\driver\MysqlDriver::optimize()'
默认全文索引驱动是 MySQL(MysqlDriver),未实现 optimize()——该子命令只对支持 optimize 的外部搜索驱动(如 Sphinx 类)有意义。MySQL 驱动下重建索引用 content-search/rebuild(实测 ..OK!)。
-
cron/run静默不等于失败。与cron/daily有回显不同,cron/run无输出(实测退出码 0);验证是否真跑了任务,看 worker 日志的 Started/Done 行或queue/info计数变化。 -
module/list的 "0 of 22 enabled" 不是异常。核心模块不计入 enabled(见第七章),市场模块装好后才会在这里出现非零计数。 -
非特权身份跑
yii被拒。身份检查见 1.1 节回显;官方 compose 形态下用docker compose exec humhub /app/yii ...进入即自带正确身份,无需手工切换。