Skip to content

部署命令 ​

deploy 用于对已下载的证书单独执行部署 hook,将证书部署到 Nginx、IIS、云厂商 CDN 等目标。hook 脚本的生成、试运行与全部环境变量见 Hook 命令。

所有命令都可以叠加 全局 flag。选择器语义与证书命令一致:-d/--domain 指定主域名,-c/--conf 指定证书配置文件。

命令一览 ​

命令作用
deploy对指定证书单独执行部署 hook,不重新下载证书

deploy ​

对指定证书单独执行部署 hook(不重新下载证书)。适用于以下场景:

  • 手动触发一次服务 reload 或 restart,不变更证书文件
  • 修改 deploy hook 脚本后重新执行部署
  • 定时任务续期后由外部脚本单独触发部署

deploy 是纯本地命令,不联网。执行流程:

  1. 先检查交付材料是否完整,缺件时退 2,并提示运行 certiman download -d <主域名> 重新下载
  2. 再复制证书到额外安装位置(cert.yaml.output 中设置了 cert_file / key_file / ca_file / fullchain_file 时执行)。目标目录不可写时直接报错,不执行 hook(详见 证书命令 · 额外安装位置)
  3. 然后执行 cert.yaml.deploy 或 --deploy-hook 指定的部署 hook
  4. 设置了额外安装位置时,hook 收到的 CERTIMAN_CERT_PATH / CERTIMAN_KEY_PATH 指向安装位置;未设置时指向证书目录中的文件

用法 ​

bash
certiman deploy [flags]

参数 ​

flag短名类型默认说明
--domain-d[]string选择器:按主域名指定
--conf-cstring选择器:证书配置文件路径
--deploy-hookstring本次执行覆盖 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

输出 ​

0成功
text
✔ example.com 部署完成
1Hook 执行失败
text
[hook:deploy] Failed to reload nginx.service: Unit not found.
错误: 部署 hook 执行失败(退出码 5);证书文件已保留,运行 `certiman deploy -d example.com` 重试
日志: ~/.certiman/logs/cc-2026-08.log

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 命令 —— hook init / hook test 与所有 hook 环境变量清单
  • 快速上手 —— 从登录、申请证书、部署到开启自动续期的完整流程
  • 证书命令 —— issue / renew / download 等命令的 --deploy-hook flag
  • 定时任务命令 —— 定时扫描、自动续期与自动部署