drd*_*ath 1 bash certificate systemd lets-encrypt certbot
我在这里尝试做的事情如下:我有一个由计时器控制的 systemd 服务,该计时器负责处理 LetsEncrypt 证书的更新。这些证书的外观在配置文件中规定。
[Unit]
Description=Let's Encrypt renewal
[Service]
Type=oneshot
Environment=CONFIG_FILE=/etc/letsencrypt/test.conf
ExecStart=-/usr/bin/certbot renew --quiet --agree-tos --noninteractive --no-random-sleep-on-renew
Run Code Online (Sandbox Code Playgroud)
续订会运行一些后处理脚本,以确保部署和安装证书。
如果配置在证书生成和上次续订之间发生更改,这些脚本将找不到预期名称下的证书。然后,这些脚本会自动触发另一个脚本,以确保创建证书:
if [[ ! -d /etc/letsencrypt/live/${CERT_NAME} ]]
then
#certificate folder we expect isn't there , request a new cert
. /etc/letsencrypt/renewal-hooks/request-new-cert.sh
fi
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是在执行 request-new-cert.sh 期间出现错误Another Instance of Certbot is already running
,导致脚本失败。
我在这件事上做错了吗?有没有更好的方法来实现我想要做的事情?
Bha*_*ani 10
解决方案一:
\n您需要终止其他 certbot 进程。\n您可以通过重新启动盒子或终止特定进程来完成此操作。\n要查找 certbot 进程,请尝试:
\nps -ef | grep certb\n
Run Code Online (Sandbox Code Playgroud)\n进程 ID 是用户后面的第一个数字,例如:
\nroot 5555 5100 \xe2\x80\xa6\n
Run Code Online (Sandbox Code Playgroud)\n要终止该进程,请尝试:
\nkill 5555\n
Run Code Online (Sandbox Code Playgroud)\n注意:将 5555 替换为您实际的 certbot PID#
\n解决方案2:
\n如果未运行,请检查系统中是否存在 .certbot.lock 文件。
\nfind / -type f -name ".certbot.lock"\n
Run Code Online (Sandbox Code Playgroud)\n如果有,您可以将其删除:
\nfind / -type f -name ".certbot.lock" -exec rm {} \\;\n
Run Code Online (Sandbox Code Playgroud)\n然后再试一次。
\n 归档时间: |
|
查看次数: |
8295 次 |
最近记录: |