jbrains
(J. B. Rainsberger)
1
大家好。我需要一些关于故障排除的帮助。这是连续第二次,我的 Let’s Encrypt SSL 证书没有自动续订。在阅读了这里的相关帖子后,我通过删除旧证书并重建应用程序,成功地续订了证书。我原以为这样做会使下次续订自动发生。但事实并非如此。
我在任何地方都看不到尝试续订证书的 cron 作业在运行的任何证据。我猜我应该在宿主机上而不是在 Docker 容器内查找。我对吗?crontab -l 显示“root 没有 crontab”,并且我在 /etc/cron* 中什么也没看到。
因此,我无法确定我的服务器是 (1) 没有尝试续订证书,还是 (2) 尝试了但失败了。有人愿意指导我完成故障排除吗?
不幸的是,由于我删除了 shared/standalone/{letsencrypt,ssl} 以便重新配置证书,所以我没有旧的日志可供查看。我如何至少验证 cron 作业已安装,以便在系统下次尝试续订证书时可以检查日志?
谢谢。
2 个赞
Moin
2
我认为这可能是最后一次发生这种情况。十二月份有一个修复:
jbrains
(J. B. Rainsberger)
3
非常感谢,但我更希望检查一下设置,看看即将到来的续订是否可能会发生。我不知道如何检查这些设置,所以我现在请求的就是这方面的帮助。
显然,应该有一个 cron 作业。它在哪里?我在我的服务器上没有看到列出任何作业。这实际上不是一个 cron 作业,而是 Rails 中的一个计划任务吗?
我看到 /var/discourse/shared/standalone/letsencrypt/acme.sh.log(在宿主系统上)显示 Discourse 检查了我的 SSL 证书,回复是“仍然有效”,所以我想这是 Discourse 将及时尝试续订证书的证据。
现在我想知道这个“cron”作业是如何配置的?这真的是一个 Linux 级别的 cron 作业,还是仅仅是 Rails 中使用类似 whenever 的东西进行的定期计划任务?我可以在不查看源代码的情况下检查和确认这一点吗?我能用 Rails 控制台或 2026 年的等效工具找到它吗?(我很久没有做 Rails 开发了。)
谢谢。
jbrains
(J. B. Rainsberger)
4
哦,对了,我终于了解到这个缺陷源于一个未记录的、不太清晰的、显然是意外的“魔法快捷方式”——“如果它以 / 开头,那么它必须是一个正则表达式。” 我还没有完全理解整个上下文,但似乎就是这样。
这就是鸭子类型(Duck Typing)文化的体现:极好的灵活性,但也伴随着风险,即如果你不把事情写下来,客户就会遇到惊喜。
看来加强 Pups::ReplaceCommand 以更仔细地检查 to 是否看起来像正则表达式会是明智之举。或者无论它在做什么,导致它假设应该对某物进行 eval() 而不是将其视为替换文本。
我猜这属于那种没有人有时间或精力去做的“杂务”范畴?如果有人能给我指出一些关于 ReplaceCommand 需要如何表现的有用的例子,也许我可以贡献一些时间和精力去做。
至少我现在对情况有了更好的了解,但在我写完这句话之前,这些知识就已经开始消退了。