CentOS7下Caddy运行Mercure提示不识别mercure指令如何解决?
你遇到的unrecognized directive: mercure报错是因为当前安装的Caddy默认没有集成Mercure扩展模块,Caddy的第三方指令都需要对应模块内置到二进制文件中才能识别使用,可通过以下两种方案解决:
解决方案
方案1:使用预装Mercure模块的Caddy版本
- 先卸载当前系统中已安装的默认Caddy版本
- 获取集成了Mercure模块的Caddy二进制文件,将其放置到
/usr/bin/目录后执行授权命令:
chmod +x /usr/bin/caddy
方案2:手动编译带Mercure模块的Caddy
- 首先安装1.18版本及以上的Golang环境,完成环境变量配置
- 安装Caddy自定义编译工具xcaddy:
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
- 执行编译命令,生成带Mercure模块的Caddy二进制文件:
xcaddy build --with github.com/dunglas/mercure/caddy
- 替换原有Caddy二进制文件并授权:
mv ./caddy /usr/bin/caddy chmod +x /usr/bin/caddy
验证操作
完成上述任意一种方案的操作后,执行以下命令确认Mercure模块已正确集成:
caddy list-modules | grep mercure
若输出包含http.handlers.mercure相关内容,说明模块安装成功,重新执行原启动命令即可正常加载配置。
内容的提问来源于stack exchange,提问作者Dev Dev
相关产品推荐
相关产品推荐

