我正在设置一个 systemd 服务来更新 letsencrypt 的 SSL 证书。我想要实现的是让 systemd 计时器停止 nginx 服务,运行我的证书更新脚本,然后重新启动 nginx。
systemd 是否有一些巧妙的方法来实现这一点?还是我只需要在脚本本身中执行相关的停止和启动操作?
答案1
systemd 是否有一些巧妙的方法来实现这一点?还是我只需要在脚本本身中执行相关的停止和启动操作?
不,没有“聪明的方法”。简而言之
systemctl stop <whatever>
和
systemctl start <whatever>
根据需要在更新脚本中
答案2
Letsencrypt 具有更新前和更新后的挂钩。
添加此
[renewal-params]
# Other settings
pre-hook=systemctl stop <service name>
post-hook=systemctl start <service name>
每次运行时都会/etc/letsencrypt/renewal/<domain name>.conf
停止并启动服务certbot renew
。
答案3
如果我理解正确的话,您想安排 nginx 停止以减少停机时间。
我不知道系统 D,但对于任何 unix 命令,您都可以使用“at”来构建自己的命令。
例如
echo "systemctll stop nginx && mv /etc/my/cert/new.cert && systemctll start nginx" | at -m 5:00