Appearance
部署命令
deploy 用于对已下载的证书单独执行部署 hook,将证书部署到 Nginx、IIS、云厂商 CDN 等目标。hook 脚本的生成、试运行与全部环境变量见 Hook 命令。
所有命令都可以叠加 全局 flag。选择器语义与证书命令一致:-d/--domain 指定主域名,-c/--conf 指定证书配置文件。
命令一览
| 命令 | 作用 |
|---|---|
deploy | 对指定证书单独执行部署 hook,不重新下载证书 |
deploy
对指定证书单独执行部署 hook(不重新下载证书)。适用于以下场景:
- 手动触发一次服务 reload 或 restart,不变更证书文件
- 修改 deploy hook 脚本后重新执行部署
- 定时任务续期后由外部脚本单独触发部署
deploy 是纯本地命令,不联网。执行流程:
- 先检查交付材料是否完整,缺件时退
2,并提示运行certiman download -d <主域名>重新下载 - 再复制证书到额外安装位置(
cert.yaml.output中设置了cert_file/key_file/ca_file/fullchain_file时执行)。目标目录不可写时直接报错,不执行 hook(详见 证书命令 · 额外安装位置) - 然后执行
cert.yaml.deploy或--deploy-hook指定的部署 hook - 设置了额外安装位置时,hook 收到的
CERTIMAN_CERT_PATH/CERTIMAN_KEY_PATH指向安装位置;未设置时指向证书目录中的文件
用法
bash
certiman deploy [flags]参数
| flag | 短名 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
--domain | -d | []string | 选择器:按主域名指定 | |
--conf | -c | string | 选择器:证书配置文件路径 | |
--deploy-hook | string | 本次执行覆盖 cert.yaml 中的 deploy 字段;取值为一条 shell 命令串,不是参数数组 |
hook 的值是命令串,不是文件路径
hook 的取值原样交给解释器执行(POSIX 为 sh -c,Windows 为 cmd /C 或 powershell -Command),因此支持 systemctl reload nginx 这类带参数的写法。路径含空格时必须自行加引号;未加引号时,命令在空格处被拆分,报「命令找不到」(退出码 127)。
bash
# ✗ 在空格处断开
certiman deploy -d example.com --deploy-hook '/opt/我的 脚本/deploy.sh'
# ✓ 把路径整体括起来
certiman deploy -d example.com --deploy-hook '"/opt/我的 脚本/deploy.sh"'powershell
# PowerShell 调用带空格的路径要用 & 调用运算符
certiman deploy -d example.com --deploy-hook '& "C:\我的 目录\deploy.ps1"'示例
bash
# 使用证书配置文件里配置的 deploy hook
certiman deploy -d example.com
# 单次覆盖 hook(不改配置文件)
certiman deploy -d example.com --deploy-hook "systemctl reload nginx"
# 使用外部配置文件
certiman deploy -c /etc/certiman/shop-cert.yaml输出
deploy 失败记录到 last_error
无论是手动运行 deploy,还是定时任务续期后执行部署,hook 以非零退出码结束时,CertiMan 都会将失败原因写入证书目录中的 last_error{step: "deploy"},certiman status、certiman cron status 与 certiman doctor 均会展示该记录。问题修复后,运行 certiman deploy -d <主域名> 成功即清除该记录。
hook 未能执行(脚本不存在或没有执行权限)时,CertiMan 会输出处置提示,见 Hook 命令 · 退出码 126 与 127。
国密双证书不会部分部署
国密(SM2)证书缺少任一加密材料时,deploy 不执行 hook,避免在服务器上部署不完整的证书材料。按提示运行 certiman download -d <主域名> 重新下载缺失的材料后,再运行 certiman deploy -d <主域名>。
相关命令
hook init deploy—— 生成 deploy hook 脚本骨架hook test—— 本地试运行 hook(不改动真实证书)- 完整示例 · 部署示例 —— nginx / apache / systemd / IIS 示例脚本
download—— 下载证书时可通过--deploy-hook执行一次部署 hook
